面试常见问题之——Tcp/Ip协议及三次握手,四次挥手。

面试的时候,因为自己的简历个人技能上有一条“了解Tcp/Ip及一些常见的网络协议”
当然,当时回答的不是很理想。现在对其做以总结,以防以后再被问起。

1.TCP和UDP的区别

TCP UDP
面向连接的 无连接的
可靠的 不可靠的的
字节流 报文
面向连接的 无连接的
传输效率低 传输效率高
全双工的 一对一,一对多,多对一,多对多

2.TCP的三次握手四次挥手
学习参考来自:一文读懂TCP/IP

三次握手:

图示:
面试常见问题之——Tcp/Ip协议及三次握手,四次挥手。_第1张图片

第一次握手:
建立连接,客户端发送请求报文,标记位为syn,并将syn值置为1;还有一个表示数据包的seq(数据包序号),值置为x,客户端进入SYN_SENT状态。【整体就是 SYN seq = x 】
第二次握手:
服务器收到客户端的SYN报文段,确认之后。设置ack(值为x+1),并且需要设置自己的syn,值为1;seq值为y。【整体就是个SYN seq = y, ack = x+1】,然后服务器端进入SYN_RECV状态。
第三次握手:
客户端收到来自服务器的SYN+ACK后,给返回一个确认消息,即ACK=y+1;发出之后客户端进入ESTABLISHED状态,服务器收到确认消息后也进入了ESTABLISHED状态。

四次挥手

图示:
面试常见问题之——Tcp/Ip协议及三次握手,四次挥手。_第2张图片

第一次挥手:
客户端发起,向服务器发送一个FIN报文,然后进入FIN_WAIT_1的状态。
第二次挥手:服务器收到FIN报文段后,回复一个ACK,然后进入CLOSE_WAIT状态。
第三次挥手:服务器向客户点发送FIN报文段,请求关闭连接,然后服务器进入LAST_ACK状态。
第四次挥手:
客户端收到服务端发送的 FIN 报文段后,向服务端发送 ACK 报文段,然后客户端进入 TIME_WAIT 状态。服务端收到客户端的 ACK 报文段以后,关闭连接。此时,客户端等待 2MSL(指一个片段在网络中最大的存活时间)后依然没有收到回复,则说明服务端已经正常关闭,这样客户端就可以关闭连接了。

部分参考原文链接:https://blog.csdn.net/petterp/article/details/102779131

你可能感兴趣的:(网络编程,#,计算机网络)