简单了解TCP

众所周知的是,TCP运行于OSI模型中的传输层,是一种面向连接的,可靠的,基于字节流的单播协议。

发送数据之前,通信双方需要先建立连接。所谓"连接",就是指C/S双方将IP地址、端口号等信息,保存在内存中。

为什么说TCP是一种可靠的传输协议呢?

  • 将数据切割为合理的长度。
    TCP将上三层的数据分割称最适合发送的数据段。这个和UDP完全不同,UDP将整个数据报发送。

  • 确认应答。

     序列号:TCP为每个字节都进行了编号。
     确认号:每一个ACK都带有对应的确认序列号,告诉对端收到哪些数据。
    
  • 超时重传。
    主机A向主机B发送数据,主机B可能由于网络拥堵的原因无法向主机A发送确认信息。
    这样主机A在一个时间间隔内没有收到确认应答,就会重发数据。
    最后,主机B会收到很多重复的数据,TCP协议有去重的功能,将重复的数据丢弃。

     "去重",通过使用序列号来达到去重的效果。
    
  • 对首部和数据进行校验。
    TCP采用CRC(循环冗余校验),对数据报首部和数据进行校验。如果接收端检验和有差错,TCP将丢弃该报文并不确认改报文段。

  • 对错序的数据段重新排序交由应用层。
    由于超时重传或者网络波动可能会造成数据报到达失序。TCP可以对收到的数据进行重新排序,再交由给应用层。

  • 滑动窗口。
    流量控制,提高传输效率。发送方根据缓冲区的大小决定窗口的大小,当收到接收方的对数据段的确认应答时候,窗口就会往后移动。

TCP报文

TCP报文

  • 源端口:2个字节,存储发送的端口号。

  • 目的端口:2个字节,记录接受发的端口号

  • 序列号:4个字节,TCP为每个字节的数据进行了编号。

  • 确认号:4个字节,每个ACK都有对应的确认序列号。用来告诉发送方收到信息。

  • 数据偏移:4bits,属于可选项。4位首部长度表示最大为1111,转为10进制为15,包头的最大长度为60字节。

  • 保留位:为将来定义新的用途保留,现在一般置0。 控制位:URG ACK PSH RST SYN FIN,共6个,每一个标志位表示一个控制功能。

     1.URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。
     2.ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。
     3.PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。
     4.RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。
     5.SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。
     6.FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。 
    
  • 窗口:来表明华东窗口的大小,告知发送端接收端的缓冲区大小。

  • 校验和:奇偶校验,此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。由发送端计算和存储,并由接收端进行验证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值