网络协议之tcpudp(计算机网络TCP)

运输层向它上面的应用层提供通信服务。属于面向通信部分的最高层,也是用户功能中的最低层。当网络的边缘部分中的两台主机使用网络的核心部分功能进行端到端的通信时,主机的协议栈中有运输层,而网络核心部分的路由器转发分组时都只用到下三层的功能。

在通信的时候从运输层的角度来看真正进行通信的实体是在主机中的进程,是这台主机中的一个进程和另一台主机中的一个进程在交换数据。它提供的是应用进程间的逻辑通信就好像数据是水平方向直接交付的一样

从这里我们可以看到网络层和运输层的区别,网络层为主机之间提供逻辑通信,运输层为应用进程之间提供端到端的逻辑通信。

运输层还会对收到的报文进行差错检测

由于我们进行通信的时候可以发现存在不同的应用进程进行通信的过程。这就表明运输层有着一个很重要的功能——复用和分用

复用:发送方不同的应用进程在加上报文的首部之后可以使用同一个运输层协议传送数据。

分用:接收方剥去报文的首部之后可以把数据正确交付给应用进程。

网络协议之tcpudp(计算机网络TCP)(1)


下面我们讲一下运输层的两个主要协议

首先说一下UDP协议。

1.UDP协议:无连接不可靠的协议。

2.UDP是面向报文的协议,既不合并,也不拆分,保留边界,一次交付一个完整报文。应用层给多少,他其它的不管,直接把这个报文加上8个字节的首部,所以从这个方面来说处理是很快的。但是由于UDP没有对报文的大小进行限制。所以如果报文太长,IP要进行分片。而太短的话,需要添加的控制信息又太多。所以会在应用层的时候对数据的大小进行限制。

3.UDP没有拥塞控制。网络出现的拥塞不会使源主机的发送速率降低。允许在网络发生拥塞时丢失部分数据,不允许有太大的时延。故适用于实时性通信。

4.UDP支持一对一,一对多,多对一,和多对多的交互通信。

5.UDP的首部开销小,只有八个字节。

下面来介绍一下UDP的首部格式

两个字节是源端口号,紧跟的是两个字节的目的端口号,再向下是两个字节的长度,最后是两个字节的检验和。

注意这个长度是UDP数据报的长度包含了数据部分和首部的长度,所以在计算UDP数据报数据部分的长度时,用数据报的长度来减去8就是UDP数据部分的长度。

当判断是从客户到服务器还是从服务器到客户的时候,我们可以看这个端口号。服务器端使用的端口号数值为0~1023。可以根据端口号来判断是服务器还是客户。


下面我们介绍一下TCP协议

TCP协议是我们目前唯一学到的面向连接的可靠交付的协议。

(1)因为其面向连接的特性,所以应用程序在使用TCP协议之前必须建立TCP连接。在数据层传输完毕后,必须对已经建立的TCP连接进行释放。

(2)每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)。但是一个IP地址可以有多个不同的TCP连接(NAT)一个端口号可以出现在不同的TCP中。web服务器端口可以和多个TCP建立连接。

(3)TCP提供可靠交付的服务。通过握手机制使TCP连接的数据无差错、不丢失、不重复、并按顺序到达。

(4)面向字节流。虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据仅仅看成是一连串无结构的字节流。TCP并不知道所传送字节流的含义。不保证接收方和发送方应用程序所发出的数据块具有对应的大小,具体接收方数据块的大小是由TCP的发送缓存决定的。

(5)TCP不关心应用进程一次把多长的报文发到TCP的缓存中,是根据对方给出的窗口值和当前网络拥塞程度来决定报文段含有的字节数量


TCP的连接

每一条TCP连接都有两个端点这两个端点不是主机,不是IP地址,不是应用进程,不是协议接口。这个端点叫做套接字(socket)或插口。在IP地址之后加上端口号就可以构成套接字。

192.168.1.1:80

每一条TCP连接由通信两端的两个套接字所决定。

但是一个IP地址可以有多个不同的TCP连接(NAT)一个端口号可以出现在不同的TCP中。web服务器端口可以和多个TCP建立连接。


TCP报文段的首部格式

TCP虽然是面向字节流的,但是在TCP中传送的数据单元是报文段。一个TCP报文段分为首部和数据两部分。

TCP报文段的首部20个字节是固定的,后面有4n字节根据需要而增加的选项,首部最小的长度是20个字节。

源端口和目的端口:各占两个字节,分别写入源端口和目的端口的端口号。通过端口来实现分用功能。

序号:占4个字节,因为一共有23个位,所以最大可以表示2^32-1这个数。TCP连接中每一个字节都按顺序编号。传送的起始序号在连接时设置。首部中序号字段值指的是所发送的第一个字节的序号。下一个序号应该为起始的序号加上数据的长度

确认号:占4个字节,是期望收到对方下一个报文段的第一个数据字节的序号。也就是上面我们所说的下一个序号。

数据偏移:占4个位,实际上为TCP报文段的首部长度,用来确定选项字段的长度由于占四个位故最大可以表示15,因此最大偏移值为60字节。即首部长度最大为60字节。由于有20字节的固定首部长度,所以选项字段最多为40字节。

保留:占6位,保留以后使用,目前置0.

之后便是6个位的信息。

1.URGURG=1时表明紧急指针字段有效,配合紧急指针使用。发送应用进程高速发送方的TCP有紧急数据,发送方TCP将紧急数据插入到本报文段数据最前面。紧急数据后面的数据为普通数据。

2.ACK:ACK=1时确认号字段有效。在建立连接后所有传送的报文段都要把ACK置1

3.PSH: 当两个应用进程进行交互式通信时,有时在一端的应用进程希望键入命令之后立刻得到回应,此时PSH置1。当接收方收到PSH=1的报文时,立刻向应用进程传输,而不是等待缓存填满。

4.RST:RST=1时表示TCP中出现了严重差错,必须释放连接,重新建立。

5.SYN:在连接建立时用来同步序号。

请求报文段:SYN=1,ACK=0

响应报文段:SYN=1,ACK=1

6.FIN: FIN=1表明报文段发送方数据已发送完毕要求释放运输连接

窗口:两个字节,因为有16个位故可以表示到2^16-1。窗口发送的是本报文段的接受窗口,用来告诉对方。从报文首部中确认号(下一个序号)算起允许对方发送的数据量。窗口值是动态发生改变的。

检验和:占两字节。检验范围包括首部和数据两部分

紧急指针:占两字节。当URG=1时有意义。指出紧急数据末尾在报文段中位置。窗口值为0也可以发送紧急数据。

选项:长度可变,最大40byte

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页