面经-计算机网络

一、http与https
HTTP(超文本传输协议),以明文方式发送消息。是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。

HTTP特点:
无状态:协议对于事务处理没有记忆能力
无连接:在HTTP/1.1之前,由于无连接特点,每次请求都需要经过Tcp三次握手和四次挥手,和服务器重新建立连接
基于请求和响应:客户端请求,服务端响应
通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性

针对无状态的一些解决策略:
通过Cookie/Session技术
HTTP/1.1持久连接方法(keep-alive)方法,只要任意一端没有提出断开连接,则保持tcp连接。在请求首部字段中的Connection: keep-alive即为表明使用了持久连接

HTTPS是基于HTTP,通过SSL或TLS提供加密数据处理,验证对方身份,数据完整性保护,HTTPS和HTTP协议相比提供了

数据完整性:内容传输经过完整性校验
数据隐私性:内容经过对称加密,每个连接生成一个唯一的加密密钥
身份认证:第三方无法伪造服务端(客户端)身份
其中,数据完整性和隐私性由TLS Record Protocol保证,身份认证由TLS Handshaking Protocols实现。

http与https的区别:
https需要申请ca证书
http是超文本传输协议,信息是明文传输的,https是具有安全性的基于ssl的加密传输
两者用的端口也不同,前者是80端口,后者是443端口

http请求结构
请求方法、url、协议版本、请求头部、请求主体

https是对http的哪一部分进行加密
浏览器用服务器的公钥加密数据,并将自己的公钥加密给服务器;服务器用自己的私钥解密,返回的数据用浏览器的公钥加密;浏览器收到数据用自己的私钥解密。完成一次通信。
还要传输CA证书

http自己手动加密和https使用ssl加密有什么区别
安全、性能

二、TCP三次握手和四次挥手

  • 客户端向服务器发送连接请求,发送SYN包(syn=j),并进入SYN-SENT状态,等待服务器确认
  • 服务器收到SYN包,必须确认客户端的SYN包(ack=j+1),同时自己也发送一个SYN包,syn=k,即发送SYN+ACK包,此时服务器进入SYN-RECV状态
  • 客户端收到服务器的SYN+ACK包,向服务器发送确认包,ack=k+1,此包发送完毕,双方都进入ESTABLISHED状态,完成三次握手。

为什么要进行三次握手?
如果只进行两次握手,服务器发送确认包后就会建立连接,但由于此时客户端并未响应服务器的请求,服务器就会一直等待客户端,这样浪费服务器的资源。

  • 客户端发送连接释放报文,FIN=1
  • 服务器收到后发出确认,此时TCP属于半关闭状态。当服务器不再需要连接时,发送连接释放报文,FIN=1
  • 客户端收到后发出确认,进入TIME-WAIT状态,等待2MSL(最大报文存活时间)后释放连接
  • 服务器收到客户端的确认后释放连接

为什么关闭连接时是四次挥手?
服务器收到关闭连接请求时不会立即关闭连接,只能先向客户端发送一个ACK确认包,等服务器将报文全部发送完之后,才发送FIN报文关闭连接

为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
TIME_WAIT状态就是用来重发可能丢失的ACK报文。在Client发送出最后的ACK回复,但该ACK可能丢失。Server如果没有收到ACK,将不断重复发送FIN片段。所以Client不能立即关闭,它必须确认Server接收到了该ACK。Client会在发送出ACK之后进入到TIME_WAIT状态。Client会设置一个计时器,等待2MSL的时间。如果在该时间内再次收到FIN,那么Client会重发ACK并再次等待2MSL。所谓的2MSL是两倍的MSL(Maximum Segment Lifetime)。MSL指一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,则结束TCP连接。

路由器与交换机的区别
路由器:寻址、转发(依靠IP地址)
交换机:过滤、转发(依靠MAC地址)

路由器有一张路由表,里面存放着寻址信息,它收到网络层的数据报后,根据路由表和选路算法将数据报传送到下一站(可能是路由器、交换机或是目的主机)
交换机有一张MAC表,里面存放着与它相连的所有设备的MAC地址,它收到数据帧后根据首部信息的MAC地址在表中查找,如果有就转发,没有就放弃

图片说明

路由器用于连接局域网与外网
交换机用于局域网内网的数据转发

路由表内容
Network Destination:目标网段
Netmask:子网掩码,IP地址与子网掩码按位与,可以得出该IP地址的网络号,IP地址与子网掩码取反后按位与,可以得出该IP地址的主机号。
Interface:达到该目标网段的本地路由器的出口IP。
Gateway:网关IP,下一跳路由器的入口IP,通常情况下,interface和gateway是同一网段的。
Metric:跳数,该条路由记录的质量,一般情况下,如果有多条到达相同目的地的路由记录,路由器会采用metric值小的那条路由。

全部评论

相关推荐

10-27 02:29
已编辑
门头沟学院 嵌入式工程师
牛客72783561...:简历不是这么写的,你这两个项目只说了用到了什么技术,却没说取得了什么成果,在我看来这就是你自己做的一个demo,没有价值。你为什么不写你电赛国二的那个项目?
点赞 评论 收藏
分享
程序员花海_:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务