TCP协议、TCP报文首部格式、三次握手四次挥手、流量控制、拥塞控制、滑动窗口

一、定义

背景:

TCP协议工作在运输层,下层的网际层,核心是IP协议,是一个不可靠的协议,因为他只是保证了数据能正确从源主机到达唯一的确定目的主机,但是传输的内容是不是被破坏,是不是按照正确顺序,没有进行处理,所以运输层的TCP协议在使用网际层的IP协议提供的服务同时,还要解决这个不可靠的问题。

TCP协议,Transmission control protocol,传输控制协议。

是一种可靠的运输层协议:他是面向连接的基于字节流的协议。

  1. 基于字节流:TCP协议将应用层的数据只看成一连串的字节流,将他们编号并存储在自己的发送缓存中,根据策略,每次从中拿出一部分构建成TCP报文;接收方也是一样,一遍将收到的报文拆开放进自己的缓存中,一边拿出字节流给上方应用层。这个过程中双方字节流内容是完全一致的。
  2. 面向连接:在通信之前,通信双方必须进行三次握手、建立TCP连接,建立成功之后才能进行数据传输、数据传输结束要进行四次挥手,释放连接。
  3. TCP显然只支持单播(一对一的通信),逻辑上来看就像是通信双方建立一个专属的传输通道。

尽管网际层的IP协议并不可靠,但是由于使用TCP协议,确保了报文不会出现误码、丢失、乱序、重复等问题,所以说他是可靠的。

二、TCP报文的首部格式

在这里插入图片描述
Ref: https://blog.csdn.net/qq_32998153/article/details/79680704

TCP的协议的功能在首部的各个字段里都有体现,上面的字段解释如下:

  1. 源端口:用来标识发送这个报文段的应用进程;(每一个计算机自己有端口号就能确定进程,不同计算机在交互过程,利用IP地址+协议+端口号唯一标识去标识网络中的一个进程,这种唯一标识的模式称为Socket)
  2. 目的端口:标识接受这个报文段的应用进程;
  3. 序号(Seq):这个序号指出这个报文段的序号,TCP连接中传送的字节流中的每个字节都按顺序编号
  4. 确认号(ACK):指出期望收到下一个报文段的序号,也起到了对前面发来的数据的确认,代表序号续上了;
  5. 数据偏移:指出报文段的数据部分离起始多远(其实也就是指出这个报文段的头部多长,因为有可变部分);
  6. 保留:保留给今后使用的;
  7. 四个短标志位
    • URG:紧急指针;
    • ACK:确认标志位,1是说明确认号有效;(tcp规定连接建立后所有报文段的这个标志位都是1)
    • PSH:推送标志位,如果是1就会尽快上交应用进程而不是等到接受缓存填满;
    • RST:重置连接标志;
    • SYN:同步标志位,用来同步序号;
    • FIN:终止标志位,用来释放TCP连接。
  8. 窗口:指出发送这个报文段的那一方的接收窗口,就是接收方用自己的接受能力提示发送方的发送能力,这就是流量控制的核心;
  9. 检验和:检查整个报文段,判断是否出错(奇偶校验);
  10. 紧急指针:只有段标志位里面的URG为1的时候这段才有效;
  11. 选项:增加功能的地方&#
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值