先简单介绍一下七层网络模型 用一句话概括
- 应用层:为用户的应用程序提供网络服务
- 表示层:定义数据格式及加密即对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。
- 会话层:管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。
- 传输层:定义了传输数据的协议和端口,将从下层接收的数据进行分段和传输,到达目的地址后再进行重组
- 网络层:定义端到端的包传输,定义标识所有节点的逻辑地址,定义路由实现的方式和学习的方式,负责对子网间的数据包进行路由选择
- 数据链路层:物理地址寻址、数据的成帧、流量控制、数据的检错、重发
- 物理层:该层为上层协议提供了一个传输数据的物理媒体,物理层规范是有关传输介质的特性标准,规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性(不是很重要)
介绍一下简单的概念
tcp属于传输层
三次握手
客户端发送syn请求,我要和你一起玩,—看服务器是否活着,如果还活着,就响应请求ask,并也发送同步请求,
当然也要让服务器知道客户端是否活着,让他准备好一起玩,最后客户端说知道了,我会和你起玩,这就ok了
四次挥手
客户端说我拜拜了,您自己玩把,服务器说 好勒,我知道了,响应请求,但是服务器也不是神,拖裤子快,但是再穿上也是要点时间的,去关闭一些资源,穿好了说ok了,我也走了,最后客户端说 知道了。
tcp在传输中怎么保证重组数据的可靠性?
这个也很好理解,我从10开始发送,那么你就必须从10开始接收,我从100始接收,那你必须从100序号开始发送
不然没发保证数据重组好后的可靠性,
如果仅用一个数字,是不行的,我穿了1过去 你也可以从2过来,这样会出问题,可能2没到,你穿了2过去,乱死。
用两个序号就可以保证。
下面这图就是数据传输的demo,同步是s,那么服务端从S开始接收,客户端从a开始接收,那么,服务器从a开始发送,
那么下一个服务器响应从s+1开始发送,这是规定的没办法改,然后开始加数据,从s+1开始,因为上次并没用加数据,也没让服务器响应, 下面加上数据后,也是这个套路,双端接口互相转换并加上数据量;
注意:无论是seq或者是ack都是双方接收完的数据。
时间窗口
tcp双方都会维持一个时间窗口,来保证一段时间内的数据都收到了,如果出问题,直接重发。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END