ChuChencheng / note

菜鸡零碎知识笔记
Creative Commons Zero v1.0 Universal
3 stars 0 forks source link

网络基础知识 #17

Open ChuChencheng opened 4 years ago

ChuChencheng commented 4 years ago

OSI 七层参考模型

根据功能人为划分的模型

  1. 物理层(网卡)

定义:定义物理设备的标准,例如光纤、网线的类型,各种介质的传输速率等参数。

作用:传输比特流,数模、模数转换

  1. 数据链路层(交换机)

定义:从物理层传来的比特流可能有错,所以有数据链路层

作用:格式化数据、错误检测、纠错,保证数据可靠性;将比特流组合成字节,字节组合成帧;对帧解码,发送对应信息

  1. 网络层(路由器,IP 协议)

定义:将数据链路层传来的数据发送到目的节点

作用:将网络地址翻译成物理地址,决定两节点间的最佳路径

  1. 传输层(TCP,UDP 协议)

定义:随着网络通信需求的扩大,为保证大量文件的准确性,需要对数据进行切分

作用:解决不同网络之间主机的数据传输与传输质量问题;对数据进行切割,保证数据到达接收方的传输层时能够按正确的数据重组

  1. 会话层

作用:负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接

  1. 表示层

作用:把数据转换为能与接收者的系统格式兼容并适合传输的格式

  1. 应用层(HTTP)

作用:规定发送方与接收方使用某种固定格式的消息头,包含数据长度等信息,以便接收方能解析

TCP/IP 参考模型

  1. 网络链接层
  2. 网络互连层(IP)
  3. 传输层(TCP,UDP)
  4. 应用层(HTTP,HTTPS,FTP,POP3,SMTP,TELNET,SSH)

TCP 与 UDP

TCP:面向连接的,可靠传输 UDP:非连接的,不可靠传输

TCP 三次握手 四次挥手

TCP 报文控制位

三次握手

第一次(客户端)

  1. 客户端将 SYN 控制标志位置为 1
  2. 随机产生一个序列 seq = X
  3. 将数据发送给服务端,进入 SYN_SENT 状态,等待响应

第二次(服务端)

  1. 判断客户端发送的报文,发现 SYN 为 1 ,知道要建立连接,将 SYN 与 ACK 控制标志位都置为 1
  2. 设置确认序号 ack = X + 1
  3. 随机产生序列 seq = Y
  4. 发送数据包给客户端,进入 SYN_RCVD 状态

第三次(客户端)

客户端:

  1. 检查确认序号 ack 是否为 X + 1 ,ACK 控制标志位是否为 1
  2. 将控制标志位置为 1
  3. 确认序号 ack = Y + 1
  4. 进入 ESTABLISHED 状态

服务端:

  1. 检查 ack 是否为 Y + 1 ,控制标志位 ACK 是否为 1
  2. 进入 ESTABLISHED 状态

四次挥手

第一次(客户端)

  1. 客户端发送控制标志位 FIN = 1 ,seq = u
  2. 客户端进入 FIN_WAIT_1 状态

第二次(服务端)

  1. 控制标志位 ACK 置为 1
  2. 确认序号 ack = u + 1 , seq = v
  3. 服务端进入 CLOSE_WAIT 状态

第三次(服务端)

  1. 服务端发送控制标志位 FIN = 1
  2. ACK = 1 , seq = w , ack = u + 1
  3. 进入 LAST_ACK 状态

第四次(客户端)

客户端:

  1. 客户端进入 TIME_WAIT 状态
  2. ACK = 1 , seq = u + 1 , ack = w + 1

服务端:

  1. 服务端进入 CLOSED 状态

参考