TCP基础

TCP报文基础

  1. TCP是一个全双工,面向连接,点对点,面向字节流的传输层协议
  2. 设有发送缓存与接收缓存
  3. 发送缓存用来:发送应用程序传送给发送方TCP准备发送的数据,TCP已发送但尚未收到确认
  4. 接收缓存:按次序到达但尚未被接受应用程序读取的数据,不按顺序到达的数据
  5. TCP把应用层浇下来的数据视为一串五结构的字节流

TCP报文格式

在这里插入图片描述

  • 源端口与目的端口:2B,不解释

  • 序号字段:4B,TCP面向字节流(逐字节传送),所以TCP连接的数据流有编号,序号字段的值指的是本报文段所发送的数据的第一个字节的序号
    eg:一个报文段字节序号为301,数据100B,表明本报文段的数据最后一个字节序号为400,所以下一个报文段序号为401开始。

  • 确认号字段:4B,表示期望收到对方的下一个报文段的序号,若确认号为N则表示序号为N-1的所有数据都已成功收到
    eg:B收到A发送的一个报文段,序号字段为501,数据长200B,这表明B正确收到了700为止的数据,因此B期望收到A的下一条数据编号为701,于是B发送给A的确认号字段为701

  • 数据偏移:4B,表示首部长度。单位为32位(4B),eg:字段值位15,表示TCP首部长60B

  • 保留字段:保留

  • 紧急位URG:URG=1,表明有紧急数据,要尽快传送,URG与紧急指针一起使用。即数据从第一字节到紧急指针所指便是紧急数据

  • 确认位ACK:ACK=1确认号ack才有效

  • 推送位PSH:PSH=1,尽快交付应用进程,不在等缓存填满再上交

  • 复位位RST:RST=1有严重差错,必须释放连接,然后再重新建立连接

  • 同步位SYN:SYN=1表示这是一个连接请求,连接接收报文
    eg:SYN=1,ACK=0这是一个请求连接过程,若对方同意连接就在响应报文中SYN=1,ACK=1这表明是一个连接接收报文

  • 终止位FIN:FIN=1biaoshi 发送方发送数据完毕,要求释放连接

  • 串口字段:2B,指允许对方发送的数据量,接收方的数据缓存有限,所用用窗口值作为接收方让发送方设置的发送窗口
    eg:确认号701,窗口大小1000,这表明从701开始,发送此报文的一方还有接收1000B的接收缓存空间

  • 校验和:2B,校验首部与数据部分,与UDP一样,加伪首部

  • 紧急指针:16位(2B),紧急数据多少字节

  • 选项字段:长度可变。TCP最初只规定了MSS(最大报文长度)。MSS时TCP报文数据字段的最大长度。

  • 填充:4B整数倍

TCP连接管理

TCP两端端点,称之为套接字。一条TCP连接被一个套接字唯一确定。
TCP使用C/S架构,主动发起连接的是client客户端,被动等待连接的是server服务器

建立连接的三次握手与释放连接的四次挥手

在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值