TCP/UDP-路由交换原理6-【HCNA笔记】

1、TCP报文头格式

TCP协议是传输层协议,它基于IP协议做可靠的数据传输。所以TCP报文在网络中传输时是存放在IP报文的Data字段中的,报文格式如下:

帧头 Data(IP报文) FCS
  IP头 Data(TCP报文)  
    TCP头 Data    

TCP头字段较多,这里将连续的字段做换行处理。

Source Port Destination Port Sequence Number Acknowledge Number Header length
16位 16位 32位 32位 4位
Resv URG ACK PSH RST SYN FIN Window Checksum Urgent Pointer Options
6位 1位 1位 1位 1位 1位 1位 16位 16位 16位 0-40字节

Source Port:源端口号

Destination Port:目的端口号

Sequence Number:首字节序号。TCP报文也是分段传输的,TCP的数据流为每一个字节都分配了序号,报文中记录其首字节的序号。如前一个报文段的首字节序号为100,而报文总长度为300字节,则下一报文段的首字节序号为400。

Acknowledge Number:确认序号。记录了下一报文段的首字节序号。

Header length:报文头长度。因Options字段长度可变,所以TCP报头的长度可变。

Resv:保留字段。供往后应用。

URG:紧急标志位。当URG=1时,表明此报文应尽快传送,而不要按本来的队列次序传送。

ACK:确认标志位。只有当ACK=1时,前面的确认序号字段才有意义。

PSH:急迫标志位。当PSH=1时,表明接收到此报文的主机应立即将此报文段传送至应用层,而不要等所有报文段都到齐了再向上交付

RST:复位标志位。当RST=1时,表明出现了严重的错误,接收到此报文的主机应与源主机断开并重建连接。还可以用来拒绝一个非法的报文段或拒绝打开一个连接。

SYN:同步标志位。在建立连接时使用,SYN=1表示这是一个连接请求或连接接受报文。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,应返回一个SYN=1和ACK=1的报文段。

FIN:终止标志位。用来释放一个连接,当FIN=1时,表明需要发送的报文段已发完,并要求释放传输连接。

Window:窗口字段。用来告知对方自己缓存区的大小,目标主机通过这个字段来确定返回给源主机的数据量最大值,也就是一个报文段的最大长度。

Checksum:校验和字段。校验范围包括首部和数据,由发送方填写接收方验证。

Urgent Pointer:紧急指针。它指出报文中紧急数据最后一个字节的序号。因为紧急数据有可能被分段发送,所以需要指明紧急数据的最后一字节,接收方接收完全后才能处理。只有当紧急标志位URG=1时此字段才有效。

Options:可选字段。TCP报文提供此字段用作功能扩展,包括窗口扩大和时间戳选项,后面会详细讲到。

2、TCP连接(三次握手)

三次握手中,使用了SYN标志位表明这是一个连接请求或连接接受报文;使用了seq(Sequence Number)字段和ack(Acknowledge Number)字段,用以校验报文的连续性;被连接主机使用ACK标志位表明同意连接。这里一般层连接的发起方为client端,被连接方成为server端,连接过程分为三次如下图所示。

第一次握手(SYN_SENT):Client向Server端发送一个请求报文,报文中SYN=1、Sequence Number=一个随机值J,Client进入SYN_SENT状态,等待Server确认。

第二次握手(SYN_RCVD):Server端收到该请求报文后,向Client返回一个确认报文,报文中SYN=1、ACK=1、Acknowledge Number=J+1、Sequence Number=一个随机值K,Server进入SYN_RCVD状态,等待Client端的再次确认。

第三次握手(ESTABLISHED):Client收到该确认报文后,认可连接已建立,于是向Server端发送一个连接建立的确认报文,报文中ACK=1、Acknowledge Number=K+1。Server端收到该报文后知道Client端已认可了本次连接,于是Client和Server就可以开始传输数据了。

3、TCP断开(四次挥手)

四次挥手中使用FIN标志位表明这是一个申请连接释放的报文;使用seq(Sequence Number)字段和ack(Acknowledge Number)字段,用以校验报文的连续性;被断开主机使用ACK标志位表明同意断开连接。因为TCP连接是全双工的,所以每个方向都必须单独进行关闭,各方向关闭均需两次共四次如下图所示。

第一次挥手(FIN_WAIT_1):Client发送一个关闭连接的请求报文,报文中FIN=1、Sequence Number=一个随机值M,Client进入FIN_WAIT_1状态,等待Server确认。

第二次挥手(CLOSE_WAIT):Server端收到该关闭的请求报文后,向Client返回一个确认报文,报文中ACK=1、Acknowledge Number=M+1,Server进入CLOSE_WAIT状态。Client端收到确认报文后就断开与Server的连接。

第三次挥手(LAST_ACK):Server端发送一个关闭连接的请求报文,报文中FIN=1、Sequence Number=一个随机值N,Server进入LAST_ACK状态,等待Client确认。

第四次挥手(TIME_WAIT):Client收到该关闭的请求报文后,向Server返回一个确认报文,报文中ACK=1、Acknowledge Number=N+1,Client进入TIME_WAIT状态。Server端收到确认报文后就断开与Client的连接,至此双向的连接都已关闭。

4、UDP报文头格式

UDP与TCP类似都是传输层协议,也是基于IP协议的,所以在传输时也是存放于IP报文的Data字段中。与TCP不同的是它是一种无连接的传输协议,它不提供数据包分组、组装和不能对数据包进行排序,也就是当报文发送后,是无法得知其是否安全完整的到达。

帧头 Data(IP报文)   FCS
  IP头 Data(UDP报文)    
    UDP头 Data  
    Source Port Destination Port Length Checksum data  
    8位 8位 8位 8位    

Source Port:源端口号。

Destination Port:目的端口号。

Length:总长度。报文的长度。

Checksum:校验和。接收方用于校验传输是否正确。

【为什么TCP关闭是四次挥手】由于TCP连接是全双工的。

也就是说Clinet和Server端是可以同时收发的,在进行关闭时,若Client端关闭了Client到Server端的连接,但此时Server端可能还有数据没有发完,所以需要等到Server端也发完数据后,Server主动向Client发起关闭请求。可以这样理解,TCP连接后,Server和Client各自发送自己的数据,发送完毕后各自断开连接。应当将Client和Server连接断开看作是两次不连续的事件,实际上也会出现Server端先断开连接或Client和Server同时断开连接,所以需要四次握手。

【TCP可选字段】可选字段的第一个字节称为kind,说明选项的类型。默认kind为空,即不启用Options字段。

kind=0:禁用此字段。

kind=1:启用窗口扩大选项。此选项使TCP的窗口定义从原来的16位扩大到32位,就是说发送方的缓存区能支持从最大能支持65535字节到最大能支持4294967295字节。

kind=2:启用时间戳选项。此选项使发送方在每个报文段中放置一个时间戳,接收方会在确认收到的报文中带上这个数值,这样发送方就能计算报文段在网络中的往返延迟。

kind=3:启用窗口扩大和时间戳选项。

【TCP与UDP的区别】UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。

TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示。而且在网络拥堵时可能出现先发出的数据后到达的情况,也就是接收方收到数据的顺序可能与发送方不一致。因此,通常人们把UDP协议称为不可靠的传输协议。

【UDP应用】既然UDP是一种不可靠的网络协议,那么还有什么使用价值或必要呢?

其实不然,在有些情况下UDP协议可能会变得非常有用。因为UDP具有TCP所望尘莫及的速度优势。虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。同时UDP也是分发信息的一个理想协议。例如,在屏幕上报告股票市场、在屏幕上显示航空信息等等。UDP也用在路由信息协议RIP(Routing Information Protocol)中修改路由表。在这些应用场合下,如果有一个消息丢失,在几秒之后另一个新的消息就会替换它。

【TCP与UDP的端口号】TCP与UDP协议使用端口号为不同的应用保留其各自的数据传输通道。

UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方(可以是客户端或服务器端)将UDP数据包通过源端口发送出去,而数据接收一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。

实际上TCP和UDP是基础的传输协议,基于这二者实现的应用层协议可能有固定的端口号,如ftp服务进行TCP通讯时默认使用21号端口,有些应用也可能临时申请一个端口,通信完成后就释放该端口,由计算机统一管理

时间: 2024-10-15 14:02:36

TCP/UDP-路由交换原理6-【HCNA笔记】的相关文章

交换机工作原理-路由交换原理7-【HCNA笔记】

1.交换原理 我们知道交换机有若干个物理端口,端口可以接入主机.路由或其他交换机.同时接入交换机的设备都有一个MAC地址,交换机内部存储着一张缓存表,表上记录着各个端口对应设备的MAC地址.这样当一台主机需要向另一台设备发送数据时,在数据帧中注明目的设备的MAC地址,交换机读取该MAC地址,查询缓存表找到对应的端口号,将帧直接发往该端口对应的设备即可.缓存表示意如下. 端口 MAC地址 0 00-50-BA-CE-07-0C 1 00-50-BA-CE-07-0D 2 00-50-BA-CE-0

【HCNA笔记】路由交换原理-1 802.3和以太网帧结构

1.RAW 802.3帧格式 前导字段 帧起始符 DMAC SMAC Length Data FCS 7字节 1字节 6字节 6字节 2字节 46-1500字节 4字节 前导字段:每个帧以7个字节的前导字段开头,以0.1间隔代码组成,用以通知目标端作好接收准备(10101010 10101010 10101010 10101010 10101010 10101010 10101010). 帧起始符:紧跟前导字段,值为10101011,最后两位'11'表示帧的实际开始.前导字段与起始符由物理设备自

IP路由基础-路由交换原理9-【HCNA笔记】

1.路由原理 数据在网络上传输时,要先查询本机的路由表而后根据路由表的指示,决定是将该包发往交换机进行帧交换还是直接发往路由器进行IP寻址.首先不同的数据在传输层根据不同的协议打包成各种传输报文,报头中记录的内容可以控制传输的过程,如TCP报文.UDP报文等.而后根据目的地不同在网络层被加上了IP报头,其中指明了目的设备的IP地址.将报文递交给网卡之前,设备先查询自己的路由表,如下图所示,这个表中记录着本机的路由策略,即不同类型的IP地址在接下来应当如何被传递.(说明:本机IP是192.168.

IP编址-路由交换原理2-【HCNA笔记】

1.IP报文组成 IP报文由IP报头和Data部分组成,报头由6个数据块组成,其中前5个数据块每块大小是固定的4字节(32位),后一个数据块长度可变,但规定了IP报头最大不能超过60字节,所以IP报头的大小范围在20到60字节. IP报头 Data 数据块1 数据块2 数据块3 数据块4 数据块5 数据块6 4字节 4字节 4字节 4字节 4字节 0-40字节 20-60字节 2.IP报头详解 数据块1(32位=4字节) Version Header Length Type of Service

ICMP协议-路由交换原理4-【HCNA笔记】

1.ICMP数据包格式 ICMP协议属于网络层,是TCP/IP协议族的一个子协议,ICMP数据包被封装在IP报文中.网络中传递的ICMP包示意如下,: ICMP数据包格式 帧头 IP报头 Data(ICMP包) FCS Type Code Checksum data 8位 8位 16位 按需要 Type:消息类型. Code:消息类型的具体参数. Checksum:校验字段,用于检查消息是否完整:在ICMP重定向消息中用于指定网关IP地址:在Echo Reply消息中这个字段包含标识符和序号.

ARP协议-路由交换原理5-【HCNA笔记】

1.ARP报文格式 ARP协议工作在数据链路层,网络中传输的ARP包示意如下(由于字段较多,这里对连续字段进行换行处理): 帧头 Data(ARP包) FCS ARP包: Hardware Type Protocol Type Hardware Length Protocol Length Operation Code 16位 16位 8位 8位 16位 Source Hardware Address Source Protocol Address 48位 32位 Destination Har

STP原理-路由交换原理11-【HCNA笔记】

1.BPDU报文格式 交换机之间使用BPDU(网桥协议数据单元)来交换STP(生成树协议)信息,BPDU报文分为配置BPDU和TCN BPDU两类分别对应STP的两种应用场景(STP工作在数据链路层). BPDU帧 帧头 Data(BPDU报文) FCS 配置BPDU(Configuration BPDU)报文:用来进行生成树计算和维护生成树拓扑. 配置BPDU报文1 Protocol ID Protocol Version ID BPDU Type Flags Root ID Root Pat

802.3和以太网帧结构-路由交换原理1-【HCNA笔记】

1.RAW 802.3帧格式 前导字段 帧起始符 DMAC SMAC Length Data FCS 7字节 1字节 6字节 6字节 2字节 46-1500字节 4字节 前导字段:每个帧以7个字节的前导字段开头,以0.1间隔代码组成,用以通知目标端作好接收准备(10101010 10101010 10101010 10101010 10101010 10101010 10101010). 帧起始符:紧跟前导字段,值为10101011,最后两位‘11’表示帧的实际开始.前导字段与起始符由物理设备自

《TCP/IP详解卷1:协议》第11章 UDP:用户数据报协议-读书笔记

章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(1)-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(2)-读书笔记 <TCP/IP详解卷1:协议>第4章 ARP:地址解析协议-读书笔记 <TCP/IP详解卷1:协议>第5章 RARP:逆地址解析协议-读书笔记 <TCP/IP详解卷1:协