HCIA - Datacom - 2.常用网络基础知识

一、TCP和UDP

  1、报文格式

  

  2、TCP报文头部

     Source Port:源端口,标识哪个应用程序发送,长度为16bit;

     Destination Port:目的端口,标识哪个应用程序接收,长度为16bit;

     Sequence Number:序号字段,TCP连接中传输的数据流每个字节都编上一个序号。序号字段的值指的是本报文段所发送数据的第一个字节的序号。长度为32bit;

     Acknowledgment Number:确认序列号,是期望收到对方下一个报文段数据的第1个字节的序号,即上次已成功接收到的数据段的最后一个字节数据的序号加1,只有Ack标识未1,此字段有效,长度为32bit;

     Header Length:头部长度,指出TCP报文头部长度,以32bit(4字节)为计算单位,若无选项内容,则该字段为5,即头部为20字节;

     Reserved:保留,必须填0,长度为6bit;

     Control bits:控制位,包含FIN、ACK、SYN等标志位,代表不同状态下的TCP数据段;

     Windows:窗口TCP的流量控制,这个值表明当前接收端可接受的最大的数据总数(以字节为单位)。窗口最大为65535字节,长度为16bit;

     Checksum:校验字段,是一个强制性的字段,由发端计算和存储,并由收端进行验证,在计算校验和时,要包括TCP头部和TCP数据,同时在TCP报文段的前面加上12字节的伪头部,长度为16bit;

     Urgent:紧急指针,只有当URG标志置1时紧急指针才有效。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。紧急指针指出在本报文段中紧急数据共有多少个字节(紧急数据防灾本报文段数据的最前面),长度为16bit;

     Options:选项字段(可选),长度为0-40字节;

  3、UDP报文头部(共8字节)

     Source Port:源端口,标识哪个应用程序发送,长度为16bit;

     Destination Port:目的端口,标识哪个应用程序接收,长度为16bit;

     Length:该字段指定UDP报头和数据总共占用的长度,可能的最小长度是8字节,因为UDP报头已经占用了8字节,由于这个字段的存在,UDP报文总长不可能超过65535字节(包括8字节的报头,和65527字节的数据);

     Checksum:覆盖UDP头部和UDP数据的校验和,长度为16bit。

  4、TCP和UDP - 端口号

 

 二、TCP的建立 - 三次握手

  

 

     TCP连接建立的详细过程如下:

      (1)由TCP连接发起方(PC1),发送第一个SYN位置1的TCP报文,初始序列号a为一个随机生成的数    字,因为没收到过来自PC2的任何报文,所以确认序列号为0;

      (2)接收方(PC2)接收到合法的SYN报文之后,回复一个SYN和ACK置1的TCP报文,初始序列号b为一个    随机生成的数字,同时因为此报文是回复给PC1的报文,所以确认序列号为a+1;

      (3)PC1接收到PC2发送的SYN和ACK置位的TCP报文后,回复一个ACK置位的报文,此时序列号为a+1,确    认序列号为b+1,PC2收到之后,TCP双向连接建立。

三、TCP的序列号与确认序列号

  

  假设PC1要给PC2发送一段数据,传输过程如下:

  (1)PC1将全部待TCP发送的数据按照字节为单位编上号,假设第一个字节的编号为“a+1”,第二个字节的序号为“a+2”,依次类推。

  (2)PC1会把每一段数据的第一个字节的编号作为序列号(Sequence number),然后将TCP报文发送出去。

  (3)PC2在收到PC1发送来的TCP报文后,需要给予确认同时请求下一段数据,如何确定下一段数据呢?序列号(a+1)+载荷长度=下一段数据的第一个字节的序号(a+1+12)。

  (4)PC1在收到PC2发送的TCP报文之后,发现确认序列号为“a+1+12”,说明“a+1”到“a+12”这一段数据已经被接受,需要从“a+1+12”开始发送。

  为了提升发送效率,也可以一次性发送多端数据,由接收方统一确认。

posted @ 2022-03-24 17:35  王庚午  阅读(285)  评论(0)    收藏  举报