zoukankan      html  css  js  c++  java
  • 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详解

  • 相关阅读:
    mysql添加用户和密码
    常用正则表达式
    锐捷配置telnet
    Cisco配置aaa验证
    华为交换机端口镜像配置
    华为交换机boot默认密码
    python自动化运维常用模块安装
    python交互模式下tab键自动补全
    python脚本检查TCP端口是否正常
    python脚本获取主机Mac地址
  • 原文地址:https://www.cnblogs.com/kumata/p/9207535.html
Copyright © 2011-2022 走看看