1. TCP和UDP区别
TCP(传输控制协议),是面向连接,可靠,基于字节流的传输协议,只支持单播,可以全双工通信,拥有拥塞控制,流量控制。建立连接使用三报文握手,断开连接使用四报文挥手。
UDP(用户数据报协议),是无连接,不可靠,基于报文流的传输协议,支持单播、多播、广播,不可以全双工通信。
2. TCP三报文握手
第一次握手:客户端--》服务端(数据包:SYN=1,seq=x),客户端进入SYN_SENT状态。
第二次握手:服务端--》客户端(数据包:SYN=1,ACK=1,seq=y,ack=x+1),服务端进入SYN_RCVD状态。
第三次握手:客户端检查数据包是否准确,客户端--》服务端(数据包:ACK=1,seq=x+1,ack=y+1),服务端检查数据包是否准确,两者进入ESTABLISHED状态。
3. TCP四报文挥手
第一次挥手:客户端--》服务端(数据包:FIN=1,ACK=1,seq=u,ack=v),客户端进入FIN_WAIT_1状态。客户端不再发送数据,但可以接收数据。
第二次挥手:服务端--》客户端(数据包:ACK=1,seq=v,ack=u+1),服务端进入CLOSE_WAIT状态。服务端开始处理剩下的数据(采用四报文握手的主要原因)。客户端接收ACK,进入FIN_WAIT_2状态。
第三次挥手:服务端--》客户端(数据包:FIN=1,ACK=1,seq=w,ack=u+1),服务端进入LAST_ACK状态。服务端不再发送数据。
第四次挥手:客户端--》服务端(数据包:ACK=1,seq=u+1,ack=w+1),客户端进入TIME_WAIT状态(防止最后的确认数据包丢失),服务端接收ACK,进入CLOSED状态,一段时间后,客户端也进入CLOSED状态。
4. 为什么会采用三次握手,若采用两次握手可以吗?
采用三次握手原因:防止接收端接收到失效的连接请求报文,因而产生错误。
若采用两次握手:
1. 如果发送端有一条失效了很久的请求连接报文段,因为网络滞留导致连接结束才到达服务端,如果只两次握手,此时接收端就会直接建立连接,而服务端发送的确认报文段也无客户端响应,导致服务端浪费资源,一直等待客户端响应。
2. 如果直接两次握手,只能说明发送端与接收端建立了正常通信,不能说明接收端与发送端建立正常通信。
5. TCP如何实现可靠连接
1. 序列号:防止数据乱序。
2. 确认应答机制/超时重传:防止数据丢包或重复包。
3. 检验和:检查包内数据是否正确。
4. 流量控制:通过滑动窗口动态控制数据传输速度。
5. 拥塞控制:防止网络瘫痪。
6. 解释TCP的滑动窗口如何实现
7. 设计一个可靠的UDP协议应该怎么做?
UDP不可靠原因:UDP传输过程中会出现丢包、数据不完整、乱序等问题。解决问题:
1. 防止丢包:加入确认应答机制和超时重传。
2. 数据不完整:加个16或32位的CRC验证字段。
3. 乱序:加个数据包序列号SEQ。
8. HTTPS是什么?
TLS/SSL:传输层安全性协议TLS(Transport Layer Security),及其前身安全套接层SSL(Secure Sockets Layer)是一种安全协议,目的为互联网通信提供安全及数据完整性保障。
HTTP:超文本传输协议,基于TCP/IP通信协议来传递数据,属于应用层的面向对象的协议,互联网上应用最为广泛的一种网络协议。
HTTPS:以安全为目标的HTTP通道,是HTTP的安全版。HTTPS的安全基础是SSL,SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通信提供安全支持。
9. HTTP的请求有哪几种?各有什么用?
1. GET:请求指定的页面信息,并返回实体主体。
2. HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
3. POST:向指定资源提交数据进行处理请求。
4. PUT:从客户端向服务器传送的数据取代指定的文档内容。
5. DELETE:请求服务器删除指定的页面。
6. CONNECT:将连接改为管道方式的代理服务器。
7. OPTIONS:允许客户端查看服务器性能
8. TRACE:回显服务器收到的请求,主要用于测试。
10. TCP协议
源端口号/目的端口号:记录数据来源和去处。
序列号:建立连接时由计算机生成的随机数作为其初始值,通过SYN包传给接收端主机,每发送一次数据,就累加一次。从而解决网络包乱序问题。
确认应答号:确认收到数据,解决不丢包问题。
6位标识符:
URG:紧急指针是否有效
ACK:确认是否有效,该位为1时,确认字段有效。
PSH:提示接收端应用程序立刻从TCP缓冲区把数据读走。
RST:对方要求重新建立连接;携带RST标识的称为复位报文段,该位为1时,表示TCP连接中出现异常必须强制断开连接。
SYN:请求建立连接;携带SYN标识的称为同步报文段,该位为1时,表示希望建立连接,并在其序列号的字段进行序列号初始值设定。
FIN:通知对方准备断开连接,携带FIN标识的称为结束报文段,该位为1时,表示准备断开连接。
11. IP地址的作用,以及MAC地址的作用
MAC地址是硬件地址,定义网络设备位置,由数据链路层负责。IP地址由IP协议提供的统一的地址格式,为互联网的每一个网络和主机分配一个逻辑地址,来抵消物理地址的差异。
12. 用户从输入URL到显示页面整个过程
1. DNS解析URL,浏览器查询DNS,获取域名对应的IP地址。
2. 浏览器向服务器请求连接(TCP三报文握手)。
3. 浏览器向服务器发送HTTP请求。
4. 服务器接收请求,根据路径参数映射到请求处理器处理,并将处理结果返回浏览器。
5. 浏览器解析并渲染页面。
13. TCP拥塞控制?以及达到什么情况的时候开始减慢增长速度
拥塞控制:防止过多数据注入网络,导致网络瘫痪。
原理:
1. 慢开始:最开始发送方拥塞窗口(cwnd)为1,每经过一次传输轮次RTT,拥塞窗口(cwnd)加倍,当cwnd超过慢开始门限,使用拥塞避免算法。
2. 拥塞避免算法:每经过一次传输轮次RTT,拥塞窗口(cwnd)+1,一旦发现网络拥塞,将慢开始门限设置为当前值一半,重新慢开始。
3. 快重传:接收方每收到一个失序报文段就立即发出重复确认,发送方只要收到3个重复确认就立即重传。
4. 快恢复:当发送方连续收到三个重复确认,就将慢开始门限减半,将当前窗口设置为慢开始门限,并采用拥塞避免算法。
14. GET与POST的区别
1. 功能上:GET从服务器获取资源,POST更新服务器资源。
2. 请求参数形式:GET请求将数据放置HTTP报文的请求头中,POST请求将数据防止HTTP报文的请求体中。
3. 安全性:POST请求比GET请求安全。因为GET请求将数据明文出现在URL上。
4. 请求大小:GET请求长度受限于浏览器或服务器对URL长度的限制,而POST请求无限制。
15. OSI网络体系结构
7. 应用层:为用户的应用进程提供网络通信服务。
6. 表示层:数据编码,压缩和解压缩,数据的加密和解密。
5. 会话层:用户应用程序和网络之间的接口。
4. 传输层:提供可靠的数据传输。
3. 网络层:将网络地址翻译成对应的物理地址,并选择最适当的路径。
2. 数据链路层:接收物理层的比特流数据,封装成帧。接收网络层的帧,拆装为比特流数据。
1. 物理层:相邻计算机节点之间比特流的透明传送。
16. TCP/IP模型
4. 应用层:
3. 传输层:
2. 网络层:
1. 物理链路层:
17.