一、基本概念
- OSI七层模型、TCP/IP五层模型
这里以访问某个页面为例:https://mp.csdn.net/postedit
应用层:https表示应用层,定义的是传输数据的内容的规范
表示层:当前填写密码进行注册登录时,会对我的密码进行某种加密,这就运用到了表示层
会话层:我的用户名和密码保存在cookie或者session中
传输层:最经典的是使用TCP协议,进行三次握手(下面补充)
网络层:访问的地址会通过域名解析层ip地址,这里就是网络层
链路层:笔记本电脑里面的网卡即涉及到链路层
物理层:通过网线连接,从而获取到网络服务
----------------------------------------------------------分隔线---------------------------------------------------------
二、相互关系
TCP在传输之前会进行三次沟通,一般称为“三次握手”,传完数据断开的时候要进行四次沟通,一般称为“四次挥手”。
TCP位码,有6种标示:
SYN(synchronous建立联机)
ACK(acknowledgement 确认)
PSH(push传送)
FIN(finish结束)
RST(reset重置)
URG(urgent紧急)
第一次握手: 客户端A,发送位码SYN=1,以及seq number = x, 并进入客户端syn_send状态
第二次握手: 服务端B,接收位码SYN=1,则知道客户端想要连接,那必须确认一下,则向客户端发送ack number(等于seq + 1), 其中ack = 1,syn =1 ,随机产生的seq = y,服务器进入SYN_RECV
状态;
第三次握手: 客户端检查ack number是否正确,正确的话,客户端和服务器端都进入ESTABLISHED
状态,完成TCP三次握手。
--------------------------------------------我是分隔线--------------------------------------------
四次挥手
第一次挥手: 主机A向主机B发送,FIN报文(设置seq number 、ACK码),表明自己没有数据需要连接。主机A进入FIN_WAIT_1
状态
第二次挥手: 主机B收到主机A的报文,并回给主机A一个报文,告诉自己也没有数据需要连接了。主机1进入FIN_WAIT_2
状态
第三次挥手: 主机2向主机1发送FIN
报文段,请求关闭连接,同时主机2进入CLOSE_WAIT
状态;
第四次挥手:主机1收到主机2发送的FIN
报文段,向主机2发送ACK
报文段,然后主机1进入TIME_WAIT
状态;主机2收到主机1的ACK
报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。(先关闭主机2,再关闭主机1)
参考文献: