计算机网络学习 - TCP协议

一、概述

        传输控制协议(Transmission Control Protocol),简称TCP。是一种面向连接的、可靠的、基于字节流的传输层通信协议。

二、TCP服务

        TCP将用户数据打包构成报文段,它发送数据时启动一个定时器,另一端收到数据进行确认,对失序的数据重新排序,丢弃重复的数据。TCP提供一种面向连接的可靠的字节流服务,面向连接意味着两个使用TCP的应用(B/S)在彼此交换数据之前,必须先建立一个TCP连接,类似于打电话过程,先拨号振铃,等待对方说喂,然后应答。在一个TCP连接中,只有两方彼此通信。TCP可靠性来自于:

  • 应用数据被分成TCP最合适的发送数据块。
  • 当TCP发送一个段之后,启动一个定时器,等待目的点确认收到报文,如果不能及时收到一个确认,将重发这个报文。
  • 当TCP收到连接端发来的数据,就会推迟几分之一秒发送一个确认。
  • TCP将保持它首部和数据的检验和,这是一个端对端的检验和,目的在于检测数据在传输过程中是否发生变化。(有错误,就不确认,发送端就会重发)。
  • TCP是以IP报文来传送,IP数据是无序的,TCP收到所有数据后进行排序,再交给应用层 IP数据报会重复,所以TCP会去重。
  • TCP能提供流量控制,TCP连接的每一个地方都有固定的缓冲空间。TCP的接收端只允许另一端发送缓存区能接纳的数据。
  • TCP对字节流不做任何解释,对字节流的解释由TCP连接的双方应用层解释。

三、TCP协议

在这里插入图片描述

  • 源端口号(Source Port):占16位。表示发送端端口号。
  • 目标端口号(Destination Port):占16位。表示接收端端口号。
  • 序列号(Sequence Number):占32位。序列号是指发送数据的位置,每发送一次数据,就累加一次该数据字节数的大小。
  • 确认应答号(Acknowledgement Number):占32位。是指下一次应该收到的数据的序列号,发送端接收到这个确认应答号以后就可以认为在这个序号以前的数据都已经被正常接收了。
  • 数据偏移(Data Offset):占4位。该字段表示TCP所传输的数据部分应该从TCP包的哪个位置开始计算,也可以当成TCP的首部长度,单位为字节。
  • 保留位(Reserved):占4位。该字段主要为以后扩展使用,一般设置为0。
  • 控制位(Control Flag):占8位。
            URG(紧急:Urgent):为1时,表示包中有需要紧急处理的数据。
            ACK(确认:Acknowledgment):该位为1时,确认应答的字段变为有效。TCP规定除了在最初建立连接时候的SYN包之外该位必须设置为1。
            PSH(推送:Push):该位为1时,表示需要将收到的数据立刻上传给上层应用协议。PSH为0时,则不需要立即传,而是先进行缓存。
            RST(复位:Reset):该位为1时,表示TCP连接出现异常,必须强制断开连接。
            SYN(同步:Synchronization):用于建立连接。SYN为1时表示希望建立连接,并在其序列号的字段进行序列号初始值的设定。
            FIN(终止:Finish):该位为1时,表示今后都不会再有数据发送,希望断开连接。当通信结束希望断开连接时,通信双方的主机之间就可以相互交换FIN位置为1的TCP段。每个主机又对对方的FIN包进行确认应答以后就可以断开连接了。不过主机收到FIN设置为1的TCP段以后不必马上回复一个FIN包,而是可以等到缓冲区中的所有数据都因已成功发送而被自动删除之后再发。
  • 窗口大小(Window Size):占16位。用于通知从相同TCP首部的确认应答号所指位置开始能够接受的数据大小,TCP不允许发送超过此处所示大小的数据。
  • 校验和(Checksum):占16位。检验和字段检验的范围包括首部和数据这两部分。和UDP用户数据报一样,在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。伪首部的格式和UDP用户数据报的伪首部一样。但应把伪首部第4个字段中的17改为6(TCP的协议号是6),把第5字段中的UDP中的长度改为TCP长度。接收方收到此报文段后,仍要加上这个伪首部来计算检验和。若使用TPv6,则相应的伪首部也要改变。
  • 紧急指针(Urgent Pointer):占16位。紧急指针仅在URG=1时才有意义,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据) 。因此,在紧急指针指出了紧急数据的末尾在报文段中的位置。当所有紧急数据都处理完时,TCP就告诉应用程序恢复到正常操作。值得注意的是,即使窗口为0时也可以发送紧急数据。
  • 选项(Options):最长可占32位。当没有使用“选项”时,TCP的首部长度是20字节。
  • 填充(Padding):当有使用“选项”时,若“选项”没有占满32位,则使用“填充”填满32位。

四、三次握手

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值