1.1.1. TCP/IP

OSI 七层模型

  1. 硬件层:在物理通道上进行比特流传输。(以太网, IEEE 802.2 等)
  2. 数据链路层:实现无差错地将数据帧(一组电信号)从一个节点传到另一个节点上。(Wi-Fi(IEEE 802.11) , WiMAX(IEEE 802.16), GPRS, HDLC, PPP 等协议)
  3. 网络层:实现将数据分组从一个主机传送到另一个主机上。(IP, ICMP, IGMP, ARP, RARP, OSPF 等协议)
    1. IP 协议:判断 IP 地址是否在本地网络。
    2. ARP 协议:地址解析协议,根据 IP 地址获取 MAC 地址。
    3. 路由协议:通过 IP 地址判断两台主机是否在同一个网络,在就发送数据包,不在就将数据包发送给网关,网关进行多次转发找到目标 IP,再通过 ARP 获取 MAC 地址。
  4. 传输层:实现某台主机的某进程与另一台主机的某进程之间的数据传输。(TCP, UDP 等协议)
  5. 会话层:实现不同机器上的用户建立、维护、终止会话关系。(ZIP, ASP, SSH 等协议)
  6. 表示层:确保各种通信设备之间能够互相操作,不考虑数据内部表示。(SSL 等协议)
  7. 应用层:使用户能够访问网络,为各类应用提供相应的服务和接口支持。(HTTP, FTP, SMTP, POP3, DHCP, DNS等协议)

TCP/IP 四层模型

  1. 链路层:对 0 和 1 进行分组,定义数据帧,确认主机物理位置,传输数据。
  2. 网络层:定义 IP 地址,确认主机所在网络位置,并通过 IP 进行 MAC 寻址,对外网数据包进行路由转发。
  3. 传输层:定义接口,确认主机上应用程序的身份,并将数据包交给对应的应用程序。
  4. 应用层:定义数据格式,并按照对应格式解析数据

一句话解释模型:

首先,应用层对请求包做格式定义;传输层加上端口号,确定双方的通信的应用程序;网络协议加上 IP 地址,确定双方的网络位置;链路层加上双方 MAC 地址,确认双方的物理位置,同时将数据分组,形成数据帧,以广播的形式发送给对方主机;对于不同网段,首先数据包会转发给网关路由器,经过多次转发,送达到目标主机;目标主机收到数据包后,将数据进行组装,然后一层一层的解析,最终被应用层协议解析交给服务器处理。

TCP 与 UDP 的区别

  1. TCP 面向连接,可靠,速度慢,效率低。
  2. UDP 无连接,不可靠,速度快,效率高。
UDP

UDP报文

UDP:

  • 不需要大量数据结构进行处理。
  • 轻信他人,随便谁都可以给它传数据。
  • 需要处理速度快,容忍丢包。

应用场景:

  1. 直播。对实时性要求高,宁可丢包也不要卡顿。
  2. 实时游戏:降低延迟。

TCP

TCP报文

介绍:

  1. 序号:Seq 号,32 位。标识源端对目的端发送的字节流。
  2. 确认序号:Ack 号,32 为,只有 ACK 标志位为 1 时,确认序号才有效。Ack=Seq+1。
  3. 标志位:
    1. URG:紧急指针(urgent pointer)有效。
    2. ACK:确认序号有效。
    3. PSH:接收方应该尽快将这个报文交给应用层。
    4. RST:重置连接。
    5. SYN:发起一个新连接。
    6. FIN:释放一个连接。

注意: ACK 与 Ack 不是同一个东西。ACK 是标志位中的。Ack 是确认序号。

TCP 的三次握手

三次握手动画

三次握手静态图

如 Client(C) Server(S) 是两个人,分别站在马路对面,准备隔空喊话: C:向 S 招手(发送 SYN) S:看到了 C 的招手,向 C 点头微笑(ACK)。这个时候 C 进入了 established 状态。但是 S 还不确定 C 是不是在对别人招手。所以向 C 招手(发送 SYN)。 C:看到了 S 的招手,向 S 点头微笑(ACK )。 S:S 看到后,进入了 established 状态。

TCP 数据传输

数据传输动画

当 S C 建立连接后,就可以传数据了。 C 喊一句 S (传 data),S 就回复一句(ACK)。 当 C 喊了第一句 S 没听到,就需要重新再喊一次(重传)。 既然重传,那么 S 也可能听到两次 C 的话,那么需要去重。

TCP 的四次挥手

四次挥手动画

四次挥手静态图

TCP 的四次挥手分解成 C 挥手(FIN)- S 伤感微笑(ack)- S 挥手(FIN)- C 伤感微笑(ack)

为什么要四次挥手

当 C 第一次挥手时,仅仅表示不再给 S 说话了,但是 C 还是能听到 S 的说话。等 S 说完了(数据发送完成),那么 S 就挥手给 C,C 微笑后 S 离开。

四次挥手释放连接时,等待2MSL的意义?

确保 C 发送的最后报文 (微笑)能够到达 S,但是可能报文会丢失(S 没看到)。如果超时 A 会重传。 2MSL 是指 两倍的最大存活时间(Maximum Segment Lifetime)。即 一个发送和一个接受说需要的最大时间。如果超过了,则表示 C 没有再次收到 S 的消息,就表明连接已经断开了。

Copyright © Kagami丶 2019 all right reserved,powered by Gitbook该文件修订时间: 2019-12-10 20:25:25

results matching ""

    No results matching ""