TCP及UDP首部各个字段

TCP概念:
        TCP提供一种面向连接的、可靠的、字节流服务。

        面向连接:面向连接即意味着两个使用TCP的应用(通常为服务器与客户端)在彼此交换数据之前必须先建立一个TCP连接。
        字节流:两个应用程序通过TCP交换8bit字节构成的字节流,TCP不在字节流中插入记录标识符。我们将这称为字节流服务( byte stream service)。
        注意:
        1.如果一方的应用程序先传10字节,又传20字节,再传50字节,连接的另一方将无法了解发方每次发送了多少字节。收方可以分 4次接收这80个字节,每次接收20字节。一端将字节流放到TCP连接上,同样的字节流将出现在TCP连接的另一端。
        2.TCP对字节流的内容不作任何解释。 TCP不知道传输的数据字节流是二进制数据,还是ASCII字符、EBCDIC字符或者其他类型数据。对字节流的解释由TCP连接双方的应用层解释。

TCP通过下列方式提供可靠性:
     1.应用数据被分割成TCP认为最适合发送的数据块。
     2.当TCP发出一个段后.它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
     3.当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。
     4.TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。
     5. 既然TCP报文段作为I P数据报来传输,而 I P数据报的到达可能会失序,因此 TCP报文段的到达也可能会失序。如果必要, TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
     6.既然I P数据报会发生重复,TCP的接收端必须丢弃重复的数据。
     7.TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。

TCP的首部:
在这里插入图片描述
1.长度:从0-31,所以每一行为32位,占4个字节。至少占5行,TCP报头最小20个字节,最大60字节。
2.16位源端口号:发送端端口号
3.16位目的端口号:接收端端口号
4.32位序号:即编号,初始值:第一个数据在第一次交互时由系统随机生成。
        序号值如何变化?第一个为随机值,第二个就是发送的数据在整个字节流中的偏移量 + 第一次生成的值

       数据值也是从小到达排列:可以保证数据不乱序
       如图所示:假设由100个字节数据要发送,初始值为2000,初始值+偏移量即为下一个的序号值。
      在这里插入图片描述
5.32位确认号:数据发送出去接收端接收后,接收端给发送端回馈确认机制。
                            若接收端接收到2000,则回复2001。
                            确认号还能够处理重复的报文段,一旦接收到相同的序号就丢弃
6.4位头部长度:15个4字节,最多60个字节。
         对于底层而言,控制协议是一堆数据,发送的还是一堆数据,接收端接收到后如何确定哪些是头部哪些是所携带的数据?
4位头部长度可确认,前20个字节为报头后面是携带的数据。若选项部分携带4字节,则前24字节为头部后面为携带数据。
7.6位保留:占6位,保留为今后使用,目前应设置为0
8.控制位UGR、ACK、PSH、RST、SYN、FIN:
     紧急UGR:当UGR置1时,发送应用进程就告诉发送方的TCP有紧急数据要传送。于是发送方的TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据。
     确认ACK:确认报文段,仅当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。
     推送PSH:当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方响应。在这种情况下,TCP可以使用PSUH(推送操作)。这时,发送方TCP把PSH置1,并立即创建一个报文段发送出去。接收方TCP收到PSH=1的报文段,就尽快(推送)交付给接收应用进程,而不在等整个缓存都填满了再向上交付。
     复位RST:当RST=1时,表明TCP连接出现了严重差错,必须释放连接,然后重新建立新运输连接。**RST=1还可以用来拒接一个非法报文段或拒绝打开一个连接。
     同步SYN:在建立连接时用来同步序号。SYN=1,ACK=0时,表明这是一个连接请求报文段;对方若同意连接,则应在相应的报文段中使SYN=1,ACK=1。因此SYN置1就表示这是一个连接请求或连接接受报文段。
     终止FIN:用来释放一个连接,当FIN=1时,表明此报文段的发送方数据已经发送完毕,并要求释放运输连接。
9.16位窗口大小:流量管控,窗口值是[0~216-1]之间的整数。窗口值告诉了对方,从本报文段的确认号算起,允许对方发送的数据量。
     心跳包机制:
10.16位校验和:CRC循环冗余检测算法
11.16位紧急指针:TCP的紧急指针是发送端向接收端发送紧急数据的方法。紧急指针是一个正的偏移量。它和序号字段的值相加表示最后一个紧急数据的下一字节的序号。这个字段是紧急指针相对当前序号的偏移,不妨称之为紧急偏移。
12.选项部分:长度可变,最小0字节,最长达40字节。当没有使用选项部分时,TCP的首部为20字节。

MTU限制:以太网为例1500字节,IP头部20个字节,TCP头部和数据加起来共1480个字节,又因为TCP头部20个字节,所以它所能携带的上层数据为1460个字节。

UDP概念:
        UDP提供一种无连接的、不可靠的、数据报服务。

        无连接:发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。
        不可靠:尽最大努力交付,不保证能到达对端
        数据报服务:UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。

UDP的首部:
首部字段很简单,只有8个字节,由4个字段组成,每个字段的长度都是2个字节。
UDP报头结构:携带数据大小长度 - 8
在这里插入图片描述
1.源端口号:在需要对方回信时选用,不需要时可全用0
2.目的端口号:在终点交付时使用
3.长度:UDP用户数据报的长度,最小值是8
4.检验和:检测UDP用户数据报在传输中是否有错,有错就丢弃
TCP与UDP区别具体请查看:TCP与UDP的区别

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值