TCP之C/S模型之三次握手四次挥手


0.了解两种开发模型


C/S模型
client/server<------->客户端/服务器:QQ、微信
重心在客户端和服务器上,用户群固定,安全系数高。
有连接的过程:建立连接---->使用连接----->释放连接 (类似于电话)
tcp抽象和原理
B/S模型
browser/server<---------->浏览器/服务器:webQQ、移动开发
重心在服务器上,用户群体不固定,安全系数不高。
不需要建立连接:(类似于邮件)
tcp抽象


1.了解TCP和UDP协议


UDP:用户数据报协议
TCP:传输控制协议
共同点:
TCP和UDP都是传输层协议,进程与进程间的通信。
不同点:
TCP协议是面向连接(前面提到的C/S模型),可靠的,有序号和确认序号,排序检错,失败重传,不支持广播的传输层协议。
UDP协议是面向无连接,不可靠,不排序,不检错,不重传, 支持广播的传输层协议。

进入正题…


2.三次握手四次挥手


TCP原理图及函数
以上函数的实现将在下一篇文章中具体讲解。
我们可以看到C/S架构在建立连接时三次握手,所以四次挥手肯定实在释放连接时。
三次握手
在介绍两种开发模型的TCP原理图中可以看到SYN(连接请求)、ACK(回应)。(重点)
1.客户端应用层调用connect函数,底层向服务器发送SYN请求。
2.服务器收到客户端的SYN请求,底层立即回复一个ACK报文和一个SYN请求报文。(ACK报文表示服务器响应连接,SYN报文表示服务器向客户端发送连接请求)
3.客户端收到服务器的ACK和SYN报文后,知道服务器的连接请求,底层回复ACK报文,连接成功。
注意:前两次握手都没有连接,当3执行完成,连接成功。
四次挥手
同样有FIN(关闭请求)。(重点)
1.客户端应用层调用close函数,底层发送FIN请求。同时客户端处于半关闭状态。
2.服务器收到客户端的FIN请求,底层发送ACK报文,同时应用层的recv函数收到0长度的数据报,应用层程序中的close被调用。
3.服务器close函数调用,底层发送FIN请求,同时服务器处于半关闭状态。
4.客户端收到服务器的FIN请求,底层回复ACK报文。
注意:这里的2和3是存在时间上的差距,不可能同时发送,所以是四次挥手。

udp的原理图及函数(了解)
UDP原理图及函数
关注我,带你走进奇妙的计算机世界。

发布了7 篇原创文章 · 获赞 51 · 访问量 5018

猜你喜欢

转载自blog.csdn.net/xjpyinxll/article/details/104646403