TCP学习笔记1----什么是TCP

什么是TCP

TCP是位于IP上层的传输层协议,它提供一种面向连接的、可靠的字节流服务。
为什么说TCP是字节流服务?这是因为应用数据被分割成TCP认为最合适发送的数据块来传输。有可能这段应用数据太小,被存在TCP的缓存区,等累积到合适的大小再传输,还有可能这段数据被TCP分割成好几块来传输,从TCP的角度来看,它并不知道这块数据有什么意义,也不知道传输的数据是什么类型的数据。

下面是TCP报文的数据格式:
TCP报文格式

  • 序号表示在这个报文段中的第一个数据字节
  • 确认序号应当是上次已成功接收到数据字节序号加1。只有ACK标志为1时,确认序号字段才有效。
  • 如果在发送过程中,发送方中间某一段报文丢失,接收方会连续发送对希望收到丢失报文的ack,发送三次就确定分组已经丢失。
  • TCP流量控制由连接的每一端通过声明的窗口大小来提供,窗口大小为字节数,表示接收方可以接收对方发过来多少个字节的数据。
  • URG置1的话,就表示出现了紧急数据。16位的紧急指针是一个正的偏移量,它与前面的序号字段相加,得到的是紧急数据中最后一个字节的序号,TCP只能知道紧急数据的最后一个字节在哪里,而紧急数据开始的地方应该由应用程序知道。紧急数据的作用是:如果一端通告了一个大小为0的窗口,也就是这一端不能再接收数据了,但是如果对端进入了紧急模式,TCP仍然会立即发送紧急指针和URG标志,上层的应用程序就会处理数据,打开窗口,使数据重新流动起来。
  • 最常见的可选字段是最长报文大小,又称MSS。每个连接方都在通信的第一个报文段(为建立连接而设置SYN标志的那个段)中指明这个选项。它指的是本端能接收到的最大报文段的长度。就是一次最多能发送多大长度的报文。有的可能会设为MTU-40bytes。如果不在一个局域网内,默认为536bytes。MSS让主机限制另一端发送数据包的长度,这样可以避免分段。
    一般可以看作在三次握手的时候,两端分别告知自己的MSS,然后选择较小的MSS作为能够一次发送的最大的报文长度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值