TCP协议和TCP/IP(簇)

TCP协议(传输层)

  • 用于应用程序之间的通信。
  • 连接的建立是经过三次握手,断开的时候四次挥手。
  • TCP 包头很复杂,但是主要关注五个问题,顺序问题,丢包问题,连接维护,流量控制,拥塞控制
  • 状态位例如: SYN 是发起一个连接,ACK 是回复,RST 是重新连接,FIN 是结束连接

TCP数据包

IP 数据包在以太网数据包的负载里面,它也有自己的头信息,最少需要20字节,所以 IP 数据包的负载最多为1480字节。

TCP 数据包在 IP 数据包的负载里面。它的头信息最少也需要20字节,因此 TCP 数据包的最大负载是 1480 - 20 = 1460 字节。由于 IP 和 TCP 协议往往有额外的头信息,所以 TCP 负载实际为1400字节左右。

 (图片说明:以太网数据包的负载是1500字节,TCP 数据包的负载在1400字节左右。)

TCP 的三次握手

TCP 的连接建立,我们常常称为三次握手。

A:您好,我是 A。

B:您好 A,我是 B。

A:您好 B。

我们也常称为“请求 -> 应答 -> 应答之应答”的三个回合。

这里面完成了客户端A的请求->收到回复和服务端B的请求->收到回复两个过程。

一开始,客户端和服务端都处于 CLOSED 状态。先是服务端主动监听某个端口,处于 LISTEN 状态。然后客户端主动发起连接 SYN,之后处于 SYN-SENT 状态。服务端收到发起的连接,返回 SYN,并且 ACK 客户端的 SYN,之后处于 SYN-RCVD 状态。客户端收到服务端发送的 SYN 和 ACK 之后,发送 ACK 的 ACK,之后处于 ESTABLISHED 状态,因为它一发一收成功了。服务端收到 ACK 的 ACK 之后,处于 ESTABLISHED 状态,因为它也一发一收了。

TCP的四次挥手

A:B 啊,我不想玩了。

B:哦,你不想玩了啊,我知道了。

这个时候,还只是 A 不想玩了,也即 A 不会再发送数据,但是 B 能不能在 ACK 的时候,直接关闭呢?当然不可以了,很有可能 A 是发完了最后的数据就准备不玩了,但是 B 还没做完自己的事情,还是可以发送数据的,所以称为半关闭的状态。

这个时候 A 可以选择不再接收数据了,也可以选择最后再接收一段数据,等待 B 也主动关闭。

B:A 啊,好吧,我也不玩了,拜拜。

A:好的,拜拜。

这里面完成了

A发送停止请求->收到确认回复

B接收完剩下的工作后也发送停止请求->收到确认回复

这两个过程

TCP/IP 

TCP、UDP、ICMP、ARP、RARP、IP、HTTP、HTTPS、FTP、SMTP

以上合成TCP/IP协议(簇)

TCP/IP 意味着 TCP 和 IP 在一起协同工作。

TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。

IP 负责计算机之间的通信。

TCP 负责将数据分割并装入 IP 包,然后在它们到达的时候重新组合它们。

IP 负责将包发送至接受者。

 顺序问题、丢包问题、流量控制、拥塞控制问题

  • 顺序问题、丢包问题、流量控制都是通过滑动窗口来解决的,这其实就相当于你领导和你的工作备忘录,布置过的工作要有编号,干完了有反馈,活不能派太多,也不能太少
  • 拥塞控制是通过拥塞窗口来解决的,相当于往管道里面倒水,快了容易溢出,慢了浪费带宽,要摸着石头过河,找到最优值。

学习资料参考:TCP详解简书TCP详解

原文地址:https://www.cnblogs.com/kumata/p/9207535.html