tcpudp协议

mac2022-06-30  34

tcp提供是是一种可靠的网络层传输机制,它是通过三次握手建立连接,通讯完成时候要拆除连接,由于tcp是卖你想连接的所以只能用端到端的通讯。tcp提供的是一种可靠的数据流 还有就是它采用的是一种”滑动窗口“的方式进行流量控制,所谓窗口实际上表示接受能力,是用来限制发送方的发送速度的。

tcp报文首部格式 每一个报文中代表的含义 这里插个眼 以后补充

三次握手和四次挥手 TCP连接建立过程: 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。 为什么要三次挥手? 在只有两次"握手"的情形下,假设Client想跟Server建立连接,但是却因为中途连接请求的数据报丢失了,故Client端不得不重新发送一遍;这个时候Server端仅收到一个连接请求,因此可以正常的建立连接。但是,有时候Client端重新发送请求不是因为数据报丢失了,而是有可能数据传输过程因为网络并发量很大在某结点被阻塞了,这种情形下Server端将先后收到2次请求,并持续等待两个Client请求向他发送数据…问题就在这里,Cient端实际上只有一次请求,而Server端却有2个响应,极端的情况可能由于Client端多次重新发送请求数据而导致Server端最后建立了N多个响应在等待,因而造成极大的资源浪费!所以,“三次握手"很有必要! TCP连接断开过程:四次挥手 假设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连接就这样关闭了!

为什么要四次挥手 why不是两次 一个原因的 和三次握手是一样 的 另一个就是服务器端可能还有数据要进行传输 所以我们要多发一个ACK来告诉客服端 我的东西还没有传完你要等我一下 然后传完了 发一个finally

注意 因为tcp是双通道的 所以 要两边都断开才可以

传输数据的过程中还有一个协议就是滑动窗口 这里先插个眼以后再来补充吧 。

udp协议 udp是传输层的协议,功能就是为ip数据服务之上增加一个最基本的服务 :复用,分用,差错检验/

udp提供的是一种不可靠的服务 具有一些tcp没有的优势

A)是无连接的。相比于TCP协议,UDP协议在传送数据前不需要建立连接,当然也就没有释放连接。

B)是尽最大努力交付的。也就是说UDP协议无法保证数据能够准确的交付到目的主机。也不需要对接收到的UDP报文进行确认。

C)是面向报文的。也就是说UDP协议将应用层传输下来的数据封装在一个UDP包中,不进行拆分或合并。因此,运输层在收到对方的UDP包后,会去掉首部后,将数据原封不动的交给应用进程。

D)没有拥塞控制。因此UDP协议的发送速率不送网络的拥塞度影响。

E)UDP支持一对一、一对多、多对一和多对多的交互通信。

F)UDP的头部占用较小,只占用8个字节。 使用UDP协议包括:TFTP(简单文件传输协议)、SNMP(简单网络管理协议)、DNS(域名解析协议)、NFS、BOOTP。

最新回复(0)