OSI-七层模型-TCP握手(计网前端向)

104 阅读3分钟

物理层

物理层的设备:网卡,网线,集线器。

信道:有线信道,无线信道

物理层传输比特流

数据链路层

建立逻辑连接、进行硬件地址寻址 将比特组合成字节进而组合成帧,用MAC地址访问介质,MAC地址:每个网卡的唯一标识。 拥有Mac地址知道谁是接收者,发送者。

网络层

定义IP。

规定网络地址的协议,叫做IP协议。IP协议第四版,IPv4,IPv6.

传输层

定义端口号。

两个熟知协议:TCP,UDP。

TCP面向连接的协议:会进行三次握手四次挥手是可靠的,会降低速度。

UDP拥有实时性,效率比TCP高。

会话层

会话层,是在发送方和接收方之间进行通信时创建、维持、之后终止或断开连接的地方,与电话通话有点相似。包含了一种称为检查点(Checkpoint) 的机制来维持可靠会话

表示层

安全,压缩,也是程序在网络中的一个翻译官。

应用层

ajax调用接口发送http请求,再比如域名系统DNS,邮件协议SMTP,webSocket长连接,SSH协议。常见如报文

TCP握手

通讯时三次握手,离开时四次挥手

seq(序列号),随机生成

ack(确认号),ack=seq+1

ACK(确认序列号有效)

SYN(发起新连接)

FIN(完成)

三次握手

  1. 第一次握手:客户端发送SYN建立连接,生成序列号seq(不一定为零)
  2. 第二次握手:服务端接收SYN+seq字段后,生成服务端seq会携带ACK确认号表示之前SYN收到,还会有一个小写Ack(发送过来的客户端seq+1)
  3. 第三次握手:客户端收到服务端响应后,会发送ACK确认序列号有效,还会发送seq(这里的seq会通过算法计算是否跟服务端ack值想等),会发送一个新的ack 是服务端seq值+1,确保正常

四次挥手

第一次挥手:客户端进行断开操作发送FIN包生成客户端的seq序列号,进入wait1状态。 第二次挥手:服务端收到FIN包进入关闭等待状态,向客户端使用ack验证(seq+1),验证成功打上ACK标记,生成服务端seq发送客户端,客户端进入wait2阶段,此时服务端可能还可以发送未完成数据。 第三次挥手:服务端完成所有任务后进入最后确认状态,向客户端发送FIN包,验证ack,使用客户端第一次的seq+1验证,验证成功打上ACK标记,生成一个新的序列号seq发送给客户端 第四次挥手:客户端进入超时等待状态 2MSL(1-4分钟),状态结束后,客户端向服务端发送ACK,确认序列号为seq+1,服务端进行断开

为什么需要超时等待时间?

为了保证服务端收到ACK包,假设如果没有2MSL的等待时间,ACK包丢失了,那服务端将永远不会断开连接,有了2MSL,如果一旦发生丢包将会进行超时重传,实现可靠连接。