五、计算机网络之传输层

传输层简介

1.    传输层需要提供如下功能:                                                                                                                                          

五、计算机网络之传输层

2.    传输层为网络应用程序提供了一个接口。

3.    传输控制协议——TCP:TCP提供了完善的错误控制和流量控制,能够确保数据正确传输,它是一个面向连接的协议。

4.    用户数据报协议——UDP:UDP只提供了非常基本的错误检测,用于不需要TCP精细控制功能的场合,它是一个无连接的协议。

面向连接协议和无连接协议

1.    面向连接协议:会在通信计算机之间建立并维护一个连接,并且在通信过程中监视连接状态。通过网络传输的每个数据包都会有一个确认,发送端计算机会记录状态信息来确保每个数据包都被正确无误的接收了,并且在需要时会重发数据。当数据传输结束后,发送端和接收端计算机会以适当方式关闭连接。

2.    无连接协议:以单向方式向目的发送数据报,不承担通知目的计算机关于数据发送的职责。目的计算机接收到数据后也不需要向源计算机返回状态信息。

端口和套接字

1.    在TCP/IP系统中,应用程序可以使用端口号通过TCP或UDP指定数据目的地。端口是一个预定义的内部地址,充当从应用程序到传输层或是从传输层到应用程序的通路。

2.    TCP或UDP数据实际是被发送到一个套接字上的。套接字是一个由IP地址和端口号组成的地址。

五、计算机网络之传输层

多路复用/多路分解

1.    多路复用是指把多个来源的数据导向一个输出,而多路分解是把从一个来源接收的数据发送到多个输出。多路传输/多路分解让TCP/IP协议栈较低层的协议不比关心哪个程序在传输数据。与应用程序相关的操作都由传输层完成了,数据通过一个与应用程序无关的管道在传输层与网际层之间传递。

2.    多路复用是指两个或多个用户共享公用信道的一种机制。通过多路复用技术,多个终端能共享一条高速信道,从而达到节省信道资源的目的,多路复用有频分多路复用(FDMA),时分多路复用(TDMA),码分多路复用(CDMA)几种。

TCP:面向连接的传输协议

1.    TCP重要特性:                                                                                                                      

五、计算机网络之传输层

2.    TCP数据格式:                                                                                                                         

五、计算机网络之传输层
 
五、计算机网络之传输层
五、计算机网络之传输层
五、计算机网络之传输层

3.    TCP连接:TCP通过连接发送和接收数据,而这个连接必须根据TCP的规则进行请求、打开和关闭。TCP的功能之一是为应用程序提供访问网络的接口。这个接口是通过TCP端口提供的,而为了通过端口提供连接,必须打开TCP与应用程序的接口。                被动打开——某个应用程序进程通知TCP准备通过TCP端口接收连接,这样就会打开TCP到应用程序的连接,从而为参与连接请求做准备。                                                                                                                                                                            主动打开——程序要求TCP发起与另一台计算机的连接,这就是主动打开状态。

五、计算机网络之传输层

4.    建立连接:三次握手总是发生在TCP连接建立的初期 。需要三次握手的原因——TCP的三次握手最主要是防止已过期的连接再次传到被连接的主机。                                                                               

五、计算机网络之传输层
五、计算机网络之传输层

5.    TCP流量控制(滑动窗口方法):接收端计算机利用“窗口”字段(也被称为“缓存大小”字段)来定义一个超过最后一个已确认***的***“窗口”,在这个范围内的***才允许发送端计算机进行发送。发送端计算机在没有接收到下一个确认消息之前不能发送超过这个窗口的***。

6.    关闭连接:计算机A发送一个数据分段,其中的FIN标记设置为1。之后应用程序进入"fin-wait"状态。在这个状态下,计算机的TCP软件继续接受数据分段,并处理已经在序列中的数据分段,但不再从应用程序接收数据了。当计算机B接收到FIN数据分段时,它返回FIN确认信息,然后发送剩余的数据分段,通知本地应用程序接收到了FIN消息。计算机B向计算机A发送一个FIN数据分段,计算机A返回确认信息,连接就被关闭了。                                                                                                

五、计算机网络之传输层
                                                                                                                                                  【注意】中断连接端可以是Client端,也可以是Server端。假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!         
五、计算机网络之传输层
五、计算机网络之传输层
                          双方同时要求关闭连接:ESTAB->FIN-WAIT-1->CLOSING->TIME-WAIT->CLOSED                                                                          TIME-WAIT状态之后等待2MSL(包的最大保存时间)是为了确保所有该连接上的包都已在网络消失。

7.    TCP如何保证可靠性:TCP的可靠性是通过顺序编号和确认(ACK)来实现的。TCP在开始传送一个段时,为准备重传而首先将该段插入到发送队列之中,同时启动时钟。其后,如果收到了接受端对该段的ACK信息,就将该段从队列中删去。如果在时钟规定的时间内,ACK未返回,那么就从发送队列中再次送出这个段。TCP在协议中就对数据可靠传输做了保障,握手与断开都需要通讯双方确认,数据传输也需要双方确认成功,在协议中还规定了:分包、重组、重传等规则;而UDP主要是面向不可靠连接的,不能保证数据正确到达目的地。

UDP:无连接传输协议

1.    UDP实际上能够执行基本的错误检验,因此,可以说UDP具有有限的错误检验功能。UDP数据报中包含一个校验和,接收端计算机可以利用它来检验数据的完整性。

2.    UDP的开销没有TCP大。

3.    UDP不会重新传输丢失或损坏的数据报、重新排列混乱的接收数据、消除重复的数据报、确认数据报的接收、建立或是终止连接。它主要是在程序不必使用TCP连接开销的情况下发送和接收数据报的一种方式。



作者:龙猫小爷
链接:http://www.jianshu.com/p/674fb7ec1e2c
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。