OSI七层网络模型

osi开放系统互连参考模型是国际标准化组织(iso)制定的一个用于计算机或通信系统间互联的标准体系
数据发送时自上而下封装,收到数据包后自下而上解包
应用层 -> 表示层 -> 会话层 -> 传输层 -> 网络层 -> 数据链路层 -> 物理层
应用层
应用层是网络体系中最高的一层,也是唯一面向用户的一层,也可视为为用户提供常用的应用程序,没个网络应用都对应着不同的协议
HTTP,TFTP ,FTP ,NFS,WAIS,SMTP
表示层
主要负责数据格式的转换,确保一个系统的应用层发送的消息可以被另一个系统的应用读取,编码转换,数据解析,管理数据的解密和加密,同时也对应用层的协议进行翻译
Telnet,Rlogin,SNMP,Gopher
会话层
负责网络中两节点的建立,在数据传输中维护计算机网络中两台计算机之间的通信连接,并决定何时终止通信,
SMTP,DNS
传输层
是整个网络关键的部分,是实现两个用户进程间端到端的可靠通信,处理数据包的错误等传输问题,是向下通信服务的最高层,向上用户功能最底层,即向网络层提供服务,向会话层提供独立于网络层的传送服务和可靠的透明数据传输
TCP,UDP
网络层
进行逻辑地址寻址,实现不同网络之间的路径选择,IP就在网络层,
IP,ICMP,ARP…..
数据链路层
物理地址(MAC地址),网络设备的唯一身份标识,建立逻辑连接,进行硬件地址寻址,相邻的两个设备间的互相通信
FDDL,Ethernet,SLIP,PPP
物理层
七层模型中的最底层,主要是物理介质传输媒介(网线或者无线)在不同设备中传输比特,将0/1信号与电信号或者光信号互相转化
IEEE 802.1A ,IEEE 802

TCP/IP 四层模型

TCP/IP参考模型时计算机网络的祖父ARPANET和其后继的因特网使用的参考模型
image.png

TCP3次握手

浏览器拿到域名对应的IP后,会拿一个随机端口向WEB服务器程序80端口发起TCP请求连接
举个例子
A:你好我时A,能听到我说话吗
B: 能听到,你能听到我说话吗
A: 可以,能听到
过程是
第一次握手:建立连接,客户端将SYN标记为 1,sep标记为X,并将SYN包发送到服务器,并进入SUN_SEN状态,等待服务器确认
第二次握手:服务器收到SYN包,知道客户端要建立链接,同事也向客户端也发送一个SYN包(SYN=1)和一个ACK包(ACK=1)随机产生一个数sep=y,ack=X+1(客户端的sep值X加一),来确认客户端的SYN,并进入SYN_RECV
第三次握手:客户端收到服务器发来的SYN+ACK包后,确认ack值,并回复服务器的一个ack确认,发送完毕后,双方进入ESTABLISHED状态
三次握手成功后,开始传输数据,完成的三次握手也就是,请求——应答——再次确认

TCP4次挥手

数据传输完毕后,双方都可释放连接,最开始的时候,客户端跟服务器都是连接状态,然后客户端主动关闭,服务器被动关闭
举个例子:
A:兄弟我这边完事了,
B:知道了,我看看我这还有没有事
B:我看了一下我这也没事了
A:ok收到,下班
第一次挥手
客户端发送一个FIN报文,报文中会指定一个序列号,此刻客户端处于FIN_WEIT1状态
发出连接释放报文段(FIN=1,序号seq=u),并停止再发送数据,主动关闭TCP连接,进入终止等待1状态,等待客户端的确认
第二次挥手:
服务端收到FIN之后,会发送ACK报文,且把客户端的序列号值加一最为ACK报文的序列号值,表明已经收到客户端的报文了,此刻服务端出去CLOSE_WAIT状态(此刻服务端还可以发送数据到客户端)
服务端收到连接释放的报文后立即发出确认报文(ACK=1,确认号ack=u+1,序号seq=v)服务端进去等待关闭状态,此刻的TCP处于半关闭的状态,客户端到服务端的连接释放。客户端收到服务端的确认后,进屋终止等待2状态,等待服务段发出的连接释放报文段,
第三次挥手:
如果服务端也想断开连接了,和客户端的第一次挥手一样,发送FIN报文,且指定一个序列号,此刻服务端出于LAST_ACK状态
服务端没有要向客户端发出的数据了,服务端发出连接释放报文段(FIN=1,ACK=1,序号seq=w,确认号ack=u+1)服务端进去最后确认状态,等待客户端的确认
第四次挥手:
客户端收到FIN之后,一样发送一个ACK报文最为应答,且把服务端的序列号值+1作为自己ACK报文的序列号值,此刻客户端处于TIME_WAIT状态,需要过一阵子以确保服务端收到自己的ACK报文之后才会进去CLOSED状态,服务端收到ACK报文之后,就处于关闭连接了,处于CLOSED状态
客户端收到服务端的连接释放报文段后,对此发出确认报文段(ACK=1.seq=u+1,ack=w+1),客户端进去时间等待状态,此刻TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,客户端才会进去关闭状态
收到一个FIN之意味着在这一方向上没有数据流动