当前位置:   article > 正文

简答QA-网络各层头部及作用_网络传输中为什么要加头部呢

网络传输中为什么要加头部呢

网络各层头部信息

Q:为什么需要那么多头部,比如TCP然后还需要IP头部,去掉不行吗?

综述:

  • 每一层的首部字节中的信息很少重复
  • 每一个信息存在都有其意义,保证其最基本的传输功能、无意义的传输
  • 不可随意删除去掉

下面正在自顶向下来分析:
一个点是,检验和checksum,检验出错直接丢,避免无意义的传输

1 应用层

来自应用层的数据包需要让下层知道,“我”是使用什么协议的。
因此应用层需要携带应用层协议标识或者描述的头部信息
还需要知道数据的长度

2 传输层

传输层实现的端到端的传输
因此,传输层要知道发送方和接收方的端口,即源端口和目的端口

数据的长度
数据校验和:出错直接丢,避免无意义的传输?❓

  • 对于TCP来说,保证可靠传输,因此需要额外的字段信息:
    • 序列号 -> 数据报的序号,,帮助失序重排
    • 确认序列号 -> 用于指示下一个数据报的序号,TCP确认机制
    • 编码位 -> 用于控制报文段的传输,如会话的建立和终止
      • 包括:URG、ACK、PSH、RST、SYN、FIN 6个
        • SYN -> 用于建立连接请求
        • FIN -> 用于结束连接
        • ACK -> 应答报文
    • 窗口大小 ->表示接收方能够继续接受的字节数,用于流量控制,
    • ……

3 网络层

以IP协议为例
IP协议并 不保证 数据的可靠传输,因此在网络层之上(传输层)通过TCP协议来实现
(由此考虑,UDP在传输层并不能保证数据的可靠传输,因此可以在应用层上结合应用层协议来实现数据可靠传输)

实现主机与主机之间的数据传输
因此需要IP地址:源IP和目的IP

Version:网络层有两个主要的IP协议,IPv4/IPv6,因此需要标识所使用的协议
头部信息有一个option项,属于开放的空间,长度由用户定义,因此需要一个头部长度以及当前数据报的总长度(数据+头)

网络层IP协议会对报文进行分组转发,即进行分组,那么就需要知道该数据报原来来自哪个数据报packetID,是否进行了分组flag,以及组偏移(fragment offset,表示组号)

Type of service: 数据报的重要程度??

4 数据链路层

数据的导航

数据单位为帧

在物理层设备上传输不同于在网络上传输,因为在物理层上传输的是比特流(即01010101)之类的高低电平信号

如果数据一个一个发,发一个停一下再发一个,效率会十分低(如 0101 ---- 1010 ---- …………)
因此在数据链路层上给他加了一个帧定界符,标识不同数据帧的边界,因此有头有尾,从而可以达到连续发(如 01011010…………)

在链路层上数据导航依靠MAC地址,
因此 需要源MAC地址、目的MAC地址(下一跳)

此外,还需要类型说明字段
(来自网络层有不同的数据报类型,如IP数据报,ARP请求数据报,RARP请求数据报等)
不同类型的数据报传输的目的不一样,加的头尾不一样

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/775499
推荐阅读
相关标签
  

闽ICP备14008679号