HCIA(2)网络通讯模型-OSI/RM的封装 与 TCP/IP的协议、TCP包、以太帧

OSI参考模型

OSI/RM Open System Interconnection Reference Model
为什么要分层呢?好处是同一层具备相同或相似的功能,不同层次协议或设备具有明显差异。
有利于标准化、降低层次关联性。是一种大而化小的思想。
  1. 应用层:应用程序与数据
  2. 表示层:转化为二进制(数据格式变化、数据加密与解密、数据压缩与解压)
  3. 会话层:建立与维持会话或请求
  4. 传输层:实现端对端的传输(0-65536端口号优化传输)
  5. 网络层:逻辑寻址IP
  6. 数据链路层:( 介质访问控制层MAC+逻辑访问控制层LLC)物理寻址
  7. 物理层:利用传输介质为数据链路层提供物理联接

封装

封装

达到某一层次之前封装上对应的功能数据 ,让其执行相应的功能

封装|400
当主机需要传送用户的数据(DATA)时,数据首先通过应用层的接口进入应用层。

  1. 在应用层,应用的数据被加上应用层的报头(AH),形成应用层协议数据单元,然后通过应用层和会话层的接口数据单元,递交到表示层。
  2. 同样的,表示层、会话层、传输层、网络层、数据链路层 也都要接收上层递交下来的数据加上自己的报头,分别是PH、SH、TH、NH、DH。
    • 其中数据链路层还要加上数据链路层报尾(Data link Termination)同时进行数据较验
    • 并组织成数据链路层数据服务单元-帧
  3. 数据链路层的帧传送到物理层之后,物理层将以比特流的方式 通过传输介质 传输出去。

解封装:


封装组成部分:
封装与解封装|400

TCP/IP

TCP/IP标准模型OSI模型TCP/IP对等模型Protocol Data Unit
应用层
应用层表示层应用层Message
会话层
传输层传输层传输层Segment
英特网层网络层网络层Packet
数据链路层数据链路层Frame
网络接口层物理层物理层Bit

协议

TCP/IP协议簇|400

应用层

协议含义商品
Hypertext Transfer Protocol超文本传输协议TCP 80
Hypertext Transfer Protocol Secure超文本传输安全协议TCP 443
File Transfer Protocol文件传输协议TCP 20/21
Secure Shell安全外壳协议TCP 22
Telnet远程终端协议TCP 23
Domain Name System域名系统TCP/UDP 53
Dynamic Host Configuration Protocol动态主机配置协议UDP 67/68

传输层

TCPUDP
面向连接协议无连接的协议
传输可靠传输不可靠
确认 重传 排序 流控
分段
效率低效率高

TCP头部

TCP头部

三次握手

A连接A标志位序号B标志位B连接
CLOSEDLISTEN
SYN_SENDSYN=1Seq=x->
<-Seq=y ACKN=x+1ACK=1 SYN=1SYN_RECV
ESTABLISHEDACK=1Seq=x+1 ACKN=y+1->ESTABLISHED
  1. 第一次握手:A端(客户端)发送连接请求报文段。
    1. SYN置为1,序号(Sequence Number)为x,
    2. A端进入SYN_SEND状态,等待B端(服务端)确认。
  2. 第二次握手:B端 接收到A端发送的SYN报文段,现在需要对其确认。
    1. 设置 确认序列(Acknowledge Number)为序号加1,ACK置为1,
    2. 同时发送SYN请求信息,序号为y,
    3. 最后将两者放入同一报文段中,一并发给A端,
    4. B端进入SYN_RECV状态,等待A端确认。
  3. 第三次握手:A端接收到B端的ACK+SYN报文。
    1. 设置序号为x+1(报文的确认序号),
    2. 同时设置当前确认序号为y+1(报文序号+1),置ACK为1。
    3. 报文发送完毕后,A端与B端都将进入ESTABLISHED状态,完成三次握手。

四次挥手

在某些情况下(如连接异常或服务器强制断开),则会同时置RST标志为1
A连接A标志位序号B标志位B连接
ESTABLISHEDESTABLISHED
FIN_WAIT_1FIN=1Seq=u->CLOSE_WAIT
FIN_WAIT_2<-Seq=v ACKN=u+1ACK=1
<-Seq=w ACKN=u+1ACK=1 FIN=1LAST_ACT
TIME_WAITACK=1Seq=u+1 ACKN=w+1->CLOSED
CLOSED2MSL
  1. 第一次挥手:A端(即可能是客户端,也可能是服务端)发送结束连接报文段。(表示A端没有数据要发送给B端了)
    1. FIN为1,序号为u,
    2. 发送后进入A端进入FIN_WAIT_1状态。
  2. 第二次挥手:B端接收到A端的结束连接报文,现需要对其确认。(即同意A端的关闭请求)
    1. ACK为1,确认序号为u加1,
    2. 设置序号为v。
    3. 发送完成后B端进入CLOSE_WAIT状态,A端进入FIN_WAIT_2状态。
  3. 第三次挥手:(如B端发送完成所有数据或也没有数据要发送给A端后)B端发送结束确认报文。
    1. FIN为1,序号为w。
    2. 同时置ACK为1,确认序号为u+1。
    3. B端进入LAST_ACT状态。
  4. 第四次挥手:A端接收到B端的结束确认报文,最后再对其确认。
    1. 设置序号为u+1(结束报文的确认序号),
    2. 同时置ACK为1,确认序号为w+1。
    3. 发送完成后A端进入TIME_WAIT状态,而B端接收完则进入CLOSED状态。
    4. A端会等待2MSL,如没有新的报文(即证明B端已正常关闭),则A端进入CLOSED状态。

以太帧

internet frame

  • 前导码:用于数据传输过程中的双方发送与接收的速率的同步。
  • SFD:帧起始界定符(Start Frame Delimiter),用于标识一个以太网帧的开始。
  • 目的 MAC 地址:指明帧的接收者。
  • 源 MAC 地址:指明帧的发送者。
  • 长度:2 个字节,指明该帧数据字段的长度,但不代表数据字段长度能够达到 2^16 字节。
  • 类型:2 个字节,指明帧中数据的协议类型,比如常见的 IPv4 中的 ip 协议采用 0x0800。
  • 数据和填充:包含了上层协议传递下来的数据,如果加入数据字段后帧长度不够 64 字节,会在数据字段加入填充字段达到 64 字节。
  • FCS:帧校验序列(frame check sequence FCS)对接收网卡(主要是检测数据与填充字段)提供判断是否传输错误的一种方法,如果发现错误,则丢弃此帧。
    • 目前最为流行的用于校验和的算法:循环冗余校验 (cyclic redundancy check CRC)。

流程

如分析一个HTTP请求,按照因特网五层协议,得到的数据流将是:

数据流在五层协议下
HTTP报文->TCP段->IP包->以太帧
即是:
流程

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值