tcp,UDP,IP协议分析

核心提示:在网络发展的早期,互连的主机之间通过NCP协议。该协议本身存在着许多缺点,如:不能互连不同的主机,不能互连不同的操作系统,没有纠错功能。为了改善这个缺点,丹尼尔了TCP / IP协议。它现在是什么时间…

在网络发展的早期,互连的主机之间通过NCP协议。该协议本身存在着许多缺点,如:不能互连不同的主机,不能互连不同的操作系统,没有纠错功能。为了改善这个缺点,丹尼尔制造了TCP / IP协议。现在几乎所有的操作系统都实现了TCP / IP协议栈。



TCP/IP协议栈分为四层:应用层、传输层、网络层、数据链路层,每个层都有相应的协议,如下所示





所谓的协议是双方进行数据传输的一种格式,在整个网络中使用了许多协议,幸运的是,每个协议都有一个RFC文档。



首先,看看网络中的以太网包的格式:P >





在linux操作系统中,当我们要发送数据时,只需要在上层准备数据,然后提交到内核协议栈,内核协议栈会自动添加相应的协议头。

让我们看看添加到每个层的协议头的具体内容。

1。TCP协议

TCP协议是一种传输层协议,保证高可靠性(数据丢失、无数据序列、无数据差错、无重复到达的数据)。

1.tcp头分析

首先,分析了tcp头的格式和各个字段的含义。





(1)端口号16bit } {



我们知道网络实现不同主机之间的进程间通信。在操作系统中有许多进程提交的过程进行处理,当数据到达时,需要使用的端口号,TCP头,有源端口(源端口和目标端口号)(目的地端口),源端口号标识发送主机的过程,和目标端口号标识的宿主进程。



(2)序列号32bit } {



序列号分为序列号和确认号。



发送的序列号用来标识数据的字节流从TCP源端发送TCP目的端口,它代表该报文段的第一个数据字节的序列号。如果字节流被视为两个应用程序之间的单向流动,TCP计数每个字节的序列号,序列号是无符号数32bit,数量达到2 321从0开始后,建立一个新的连接时,SYN标志改为1,和序列号字段包含初始序列号是(初始序列号)由主机选择的连接。



确认序列号:下订单数量预计会在确认发送端收到。因此,确认号码应该是最后一次,数据字节顺序号加1已成功接收。它是有效的只有确认序号字段时是1.tcp ACK标志的应用层提供全双工服务,这意味着数据可以在两个方向独立传送。因此,连接的每一端必须保持每一个方向的数据序列号。



(3)抵消4bit } {



这里的偏移实际上指的是TCP报头的长度,它用来指示TCP报头中32位字的数量。通过它,我们可以知道一个TCP包,其用户数据的开始。这场占4bit,如果bit的值是0101,TCP的第一长度是5 * 4 = 20字节,TCP的最大长度是15 * 4 = 60字节。然而,没有可选的字段,和正常的长度是20个字节。



(4)保留6bit } {



目前还没有用过,它的值是0。



(5)6bit马克{ }



TCP中有6个符号位,其中一个可以同时放置在1位。



紧急急救(紧急指针的指针)是有效的

ACK确认序列号是有效的。

PSH表示收件人应该给消息的应用层尽快无需等待缓冲区填满



RST通常表示连接断开。

例如:TCP客户端发起一个连接到一个服务器监听端口,wirshark捕获如下





你可以看到,主持人:192.168.63.134启动连接的主机的请求:192.168.63.132,但主持人:192.168.63.132不是听相应的端口服务器端口。

Host: 192.168.63.132 sends a RST disconnected TCP packet disconnected.



SYN同步序列号用于启动连接。

鳍发送器完成发送任务(即断开连接)。



(6)窗口大小(窗口){ 16bit }



窗口的大小,它表示源方法可以接受的字节数。



(7)检查16bit }和{



校验和覆盖整个TCP消息段:TCP报头和TCP数据。这是一个必须由发起者计算并存储并由终端验证的强制性字段。



(8)急救16bit指针{ }



急救是有效的只有当指针字段设置为1,急救指针是一个正偏置,添加到序列号字段代表的急救数据最后一个字节的序列号的值。TCP的急救模式是一种发送急救数据发送端的的另一端。



(9)tcp选项



是可选的,在后面的捕捉,我们看看它



2。关键的细节



(1)建立一个连接的三次握手



请求端(通常称为客户端)发送一个SYN段,指示客户端要连接的客户机端口,初始序列号(在本例中是1415531521),这个SYN段是消息部分的1。



服务器发送回包含消息的初始序列号的SYN消息部分(消息部分2)。同时,您将确认号设置为客户的不到1,以确认客户端的SYN消息段。SYN将占用序号。



C客户机必须将确认号设置为服务器的否加上1以确认服务器的SYN消息段(消息部分3)。



三个消息段完成连接。这个过程也称为三次三次握手。



作为wirshark捕获:







可以看出,三次握手决定了数据包的数量、最大接受数据的大小(窗口)和MSS(最大段大小)。



MSS = MTU IP头TCP头,MTU的最大传输单元,我们将讨论IP头的分析,一般是1500个字节的IP头和可选的选项的TCP头是20字节。所以MSS = 1500 20-20 = 1460。



MSS限制了TCP数据包携带的数据的大小。这意味着,当应用层通过TCP协议将数据传送到传输层时,如果应用级数据MSS必须被分割,则它可以被划分为多个片段,并将逐一发送。



例如:一次性应用层传输层提交4096个字节的数据,通过这段时间的wirshark捕获效果如下:





前三个是三个握手过程,后三个是发送数据的过程。因为数据的大小是4096个字节,所以已经传输了三次(1448 + 1448 + 1200)。

细心的人会问为什么每次传输的最大数据大小不是1460字节,因为TCP进行选项这里,TCP报头长度= 20 + 12(可选尺寸)= 32字节,可以传输的最大数据是1500-2000 - 32 = 1448个字节。



(2)四挥手断线



当前的网络通信是基于套接字的。当客户端关闭套接字时,内核协议栈自动向服务器发送一个鳍位置包,请求断开连接。



当服务器从客户端接收到一个鳍断开请求时,内核协议栈将立即发送一个ACK包作为答复,指示客户机已经收到请求。



经过一段时间后,C服务器关闭了自己的套接字。此时内核协议栈向客户端发送一个鳍定位的包,请求断开连接。



在从服务端接收鳍断开请求之后,d客户机发送ACK响应,指示服务器已收到请求。



以下wirshar捕获分析:







(3)保证TCP的可靠性



TCP采用了重传的转发功能,该技术是提供可靠数据传输服务的基础。积极的技术来提供可靠的数据传输服务。这种技术需要收件人接收数据时,在确认信息返回到源站发送ACK。对每一组派出一个记录,等待确认消息之前发送下一组。发件人同时启动一个定时器,发送的数据包,并恢复组刚刚发当计时器过期消息尚未到来。图3-5显示了一个具有重传功能的肯定应答协议的数据传输,和图3-6显示超时和重传数据包丢失的原因。为了避免网络延迟由于晚确认ND反复确认,协议在确认一个包中的一个序列号,这样接收方就可以正确分组并确认关联。

图3-5,我们可以看到,虽然网络同时具有双向通信能力,因为发送下一个数据包的延迟必须延迟在接收的分组的确认信息,简单的肯定应答协议浪费了大量宝贵的网络带宽。为此,TCP使用滑动窗口机制来提高网络的吞吐量和解决端到端的流量控制。







(4)滑动窗口技术



滑动窗口技术是一种简单的重传肯定机制的复杂变形。它允许发送方在等待一个确认消息发送多个数据包,如图3-7所示,发送方发送一个数据包序列的滑动窗口协议放置一个固定长度的窗口,在数据包的序列,然后在窗口中的所有数据包发送出去;当发送方的窗口接收第一数据包的确认,它可以向后滑动并发送下一个数据包的时间与确认;到窗口不断向后滑动。







二、udp协议



UDP协议也是一种传输层协议,它是无连接的,不保证可靠的传输层协议,协议的报头很简单,如下所示:





此处的端口号没有解释,与TCP端口号的含义相同。

长度占用2字节,并标识UDP报头的长度。

校验和:检查和,包括UDP头和数据部分。

三,IP协议

p是T/P/p p p协议族中最核心的协议。

报表格式传输,其特点如下:



不可靠的意思是它不能保证P数据能够成功到达目的地。

传输服务。如果发生某种错误,如路由器暂时耗尽缓冲区,则p有一个简单的错误。

处理算法:丢弃数据报,并将i p p消息发送到源端。

提供(如T - P)。



术语C表示它不维护后续数据报的任何状态信息。

每个数据报的处理是相互独立的,这也表明在发送顺序中不能接收到i p数据报。

发送到同一目的地的两个连续数据包(第一个A,然后是B),每个数据报独立路由。

选择可以选择不同的路线,所以B可能在A到达之前到达。



1.ip报头格式





(1)版本占4位,这是指IP协议的版本。双方使用的IP协议版本必须一致。当前广泛使用的IP协议版本是4(IPv4)。至于IPv6,它仍处于草案阶段。





(2)第一节的长度为4,最大十进制值为15。注意该字段表示的单位数为32位字长(1位字长为4字节)。因此,当IP报头的长度是1111,或小数15,标题长度可以达到60字节。当IP包的第一长度不是4字节的整数倍,一定充满了最后的填埋场,因此数据的一部分将永远从4字节的整数倍,所以它是实现IP协议更方便,60的第一个字节长度的缺点是,它可能不是有用的时候。但这是为了让用户尽可能降低成本。最常用的第一个长度为20字节(第一长度0101),并没有选择使用。





(3)区分服务占8位,用于更好的服务,这一领域被称为旧标准中的服务类型,但实际上并没有被使用。1998,IETF把这个领域改名为区分服务DS(区分服务),这个领域只在区分服务使用时才起作用。





(4)的总长度指的是第一个和数据之和的长度,单位是字节,。总长度字段是16位,因此数据报的最大长度为216-1 = 65535字节。

每个数据链路层IP层下有自己的帧格式,其中包括帧格式的数据字段的最大长度,即最大传输单元MTU(最大传输单元)。当一个数据报封装成链路层帧,数据报的,这是总长度的头和数据部分,不得超过该数据链路层以下的MTU值。





(5)鉴定(鉴定)16位账户。IP软件维护存储器中的计数器,每产生一个数据报,计数器加1,并将值赋给识别领域。但这标识;它不是一个序号,因为IP是无连接的服务,与数据报没有接到治安问题。当数据报被分在网络的MTU的识别字段的值复制到所有标识符的数据报,相同的标识字段的值使每一块数据加载到数据报正确碎片。





(6)标志(国旗)占3,但目前只有2是有意义的。

标记字段中的最低位被记录为MF(更多片段)。MF = 1表示以下有分段的数据报。MF = 0表示这是多个数据报表中的最后一个。

在国旗的领域中间的一个记录为DF(人;T片段),这意味着不可分段只有当df = 0可以分裂。





(7)偏移量是13。切片迁移表明,在原来的组件的相对位置是一个较长的组分区后,在切片从用户的数据字段的起点。偏移量单位是8字节。也就是说,对每片的长度必须是8字节的整数倍(64位)。





(8)8位生存时间的帐户,和生命时间领域常见的英文缩写是TTL(生存时间),这表明它是在网络数据报的生活。这场是由源节点发送数据报,目的是防止无法投递的数据从受限制的互联网,使网络资源白白消耗掉。原来的设计是TTL秒单位。当路由器通过,TTL是一段由路由器的数据包消耗的时间中减去。如果数据报消耗小于1秒的路由器,TTL值减少1,当TTL值为0,数据包丢弃。





(9)协议占用8位。协议字段指示使用该数据包携带的数据的协议,以使目标主机的IP层知道应该将哪个进程交给数据部分。





(10)第一次试验和16。这场测试数据的第一部分,但不包括数据部分。这是因为每一个路由器通过一个路由器,路由器会重新计算头检查和一些领域,如生存时间,国旗和偏移。不检查数据部分可以减少计算的工作量。





(11)源IP地址占32位。





(12)IP地址占32位。



2。片的解释



这意味着,当数据需要传输大于最大传输单元(MTU),它需要被划分为多个数据包,然后发送给对方。当我们说TCP,有许多人不能区分MSS。与下面的图,我觉得他们完全可以尊敬的。





如果个人意义上的TCP协议传输数据,到IP层,就不需要碎片,只有当大数据通过UDP协议传输时,它才需要分裂。



例如,UDP协议传输10240字节数据。





可以看出,当数据被提交到网络层,数据被分割在多个数据包的最大传输单元,通过IP协议发送到对方。每一个数据包的最大字节MTU IP头= = 1480 1500-2000。



四。以太网头





三部分:源MAC地址MAC地址|到|协议。



因此,以太网中有多种类型的包。



ARP协议是通过IP地址获取相应的MAC地址,称为地址解析协议。

RARP协议是通过MAC地址来获得相应的IP地址,称为反向地址解析协议