TCP和UDP的区别以及tcp3次握手和4次挥手。

TCP(Transmission Control Protocol) 是传输控制协议,提供的是面向连接、可靠的数据流传输。当客户端和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能顺序地从一端传到另一端。

tcp传输数据就像打电话,你必须知道对方的电话号码,电话打通之后才能进行对话,先说的话先到,后说的话后到是有顺序的。对方对方没听清你的说的话时你可以重说一遍。

UDP(User Datagram Protocol)是用户数据报协议提供的是非面向连接的、不可靠的数据流传输它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地UDP在传输数据前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,不保证数据按顺序传递,故而传输速度很快

udp传输数据就像寄一封信,发信的人只管发,不管到,但必须在信封上写明对方的地址。发信者和收信者不需要建立连接,全靠邮电局联系,信发到是可能已经过了很久了,也可能根本没发到。先发的信件未必先到,后发的信件也未必后到。


tcp一般用于文件传输ftp http数据准确性要求高,速度可以相对慢),发送或接收邮件(pop imap smtp 对数据准确性要求高,非紧急应用),远程登录(telnet ssh 对数据准确性有一定要求,有连接的概念)等等;UDP一般用于即时通信(qq聊天 数据准确性和丢包要求比较低,但速度必须快)


三次握手:建立连接

建立连接时,客户端发送syn包到到服务器,服务器收到syn包时向客户端发送ACk 包,同时发送一个自己的syn包,客户端收到服务器的SYN+ACK包后向服务器发送ACK  这样就建立三次握手连接

四次挥手:断开连接

断开连接可以是客户端发起,也可以是服务器端发起。假设客户端发起中断连接请求。客户端首先发送FIN报文给服务器端,表示客户端这边已完成发送数据的任务。服务器接到FIN报文后,如何此时服务器端还有数据没有发送完成,可以继续发送数据,所以服务器先发送ACK 包给客户端。 当服务气短确定数据已经发送完成,则向客户端发送FIN 报文,告诉客户端,服务器这边数据发送完了。 客户端接收到FIN报文后,就知道可以断开连接了。但是他还是不相信网络,所以发送ACK包给服务器进入TIME_WAIT状态,服务器端收到ACK后就断开连接了。 客户端在等待了一段时间后没有收到来自服务器的回复,则证明,服务器端已经正常关闭,最后客户端关闭连接        最终完成了4次挥手的断开连接
转自:程序员面试宝典,以及



你可能感兴趣的:(操作系统及网络编程相关)