学习笔记之网络基础

OSI七层模型

  1. 应用层:为应用程序提供服务,如文件服务;电子邮件等服务。数据单元:数据,协议:STMP电子邮件协议,FTP文件传输协议,HTTP超文本传输协议等。
  2. 表示层:处理信息的表示方法,提供如压缩和恢复,加密解密,格式转换等功能。数据单元:数据。
  3. 会话层:维护两个节点的连接,确保点到点传输不中断。数据单元:数据。
  4. 传输层:提供可靠的端到端的服务,负责信息的传输,向上层屏蔽了下层数据通信的细节。数据单元:数据段,协议:TCP UDP。
  5. 网络层:为两个节点创建逻辑链路,通过路由选择算法选择最适合的路径,解决不同子网间的通信。数据单元:分组/数据报,协议:ip协议 ICMP协议 ARP协议。
  6. 数据链路层:通过各种控制协议,将有差错的物理信道变为无差错的数据链路(只查错不纠错,丢弃出错的帧)。数据单元:帧,协议:ppp协议。
  7. 物理层:利用传输介质为数据链路层提供物理连接,实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。数据单元:比特。

TCP/IP四层模型

  1. 应用层 对应 OSI七层模型中的中的应用层和表示层以及会话层。
  2. 传输层 对应 OSI中传输层
  3. 网络层 对应 OSI中网络层
  4. 链路层 对应 OSI中数据链路层和物理层

TCP和UDP协议

TCP协议的特点:

  1. 面向连接(需要通过三次握手建立连接,通过四次挥手释放连接)
  2. 可靠的(通过同步序号和重传机制保证数据可靠)
  3. 流量控制(通过滑动窗口)
  4. 拥塞控制(慢启动,拥塞避免,快重传,快恢复)

UDP协议的特点:

  1. 无连接
  2. 尽最大努力交付(不可靠)

三次握手:
①客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
②服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。
③客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。
学习笔记之网络基础
问:为什么时三次握手而不是两次?
答:1.只有三次握手才能确保客户端和服务器端双方的seq序号同步完成。2.防止已经失效的连接又传送到服务器端导致错误。

四次挥手:
①客户端发送FIN=1,seq=u ,表示发送结束可以断开连接,进入 FIN_WAIT1状态。
②服务器端收到FIN报文,发送 ACK=1,seq=v,ack=u+1 进入CLOSE_WAIT状态。
客户端收到ACK报文后进入FIN_WAIT2状态。
服务器继续发送数据
③服务器发送 FIN=1,ACK=1,seq=w,ack=u+1 表示发送结束可以断开连接,进入LAST_ACK状态
④客户端收到FIN报文,发送ACK=1,seq=u+1,ack=w+1,进入TIME_WAIT状态。
服务器收到ACK报文后断开连接进入CLOSED状态。
…客户端经过2MSL时间后断开连接进入CLOSED状态。

学习笔记之网络基础

问:为什么时四次挥手而不是两次或三次?
答:如果两次挥手后客户端断开会导致服务器剩余信息无法送达。
如果三次挥手后服务器断开,此时如果第三次挥手发送的FIN报文丢失,会导致客户端一直等待,浪费资源。

问:为什么第四次挥手后客户端要等待2MSL时间?
答:最后一次ACK丢失的情况下,服务器经过MSL后会重传FIN,FIN再经过MSL到达客户端,因此如果2MSL没有收到FIN就可以断开。