我是靠谱客的博主 怕黑蜜蜂,最近开发中收集的这篇文章主要介绍网络五层协议目录一、物理层(Physical)二、数据链路层(Data Link)三、网络层(Network)四、传输层 (Transport)五、应用层(Application),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

一、物理层(Physical)

主要的设备和功能

数字信号、模拟信号

数据通信模型

信道(Channel) 

二、数据链路层(Data Link)

封装成帧(framing)

​​​​​​​透明传输

差错检验

 CSMA/CD协议

Ethernet V2帧的格式

网卡

PPP协议(Point to Point Protocol)

三、网络层(Network)

网络层首部

 版本(Version)

首​​​​​​​部长度(Header Length)

区分服务(Differentiated Services Field)

总长度(Total Length)

标识(Identification)

标志(Flags)

片偏移(Fragment Offset)

生存时间(Time To Live,TTL)

首部检验和、协议​

四、传输层 (Transport)

UDP协议

UDP - 数据格式

UDP - 检验和(Checksum)

 UDP - 端口(Port)

TCP协议

TCP - 数据格式

​​​​​​​​​​​​​​数据偏移

保留位(Reserved)

标志位(Flags)

检验和(Checksum)

序号(Sequence Number)

确认号(Acknowledgment Number)

窗口(Window)

TCP要点

五、应用层(Application)

常见协议

域名(Domain Name)

顶级域名的分类

二级域名

DNS(Domain Name System)-  域名系统

IP地址的分配

DHCP(Dynamic Host Configuration Protocol)-动态主机配置协议

DHCP - 分配IP地址的4个阶段

DHCP - 4个阶段

DHCP - 细节


网络互联模型

请求过程

网络分层


一、物理层(Physical)

  • 物理层定义了接口标准、线缆标准、传输速率、传输方式等 ,媒体包括架空明线、平衡电缆、光纤、无线信道等等,以及确保原始的数据可在各种物理媒体上传输,传输单位是比特​​​​​​​​​​​​​​
  • 主要的设备和功能

    • ​​​​​​​​​​​​​​网卡:唯一的网卡硬件地址,不能更
    • 中继器:放大信号,延长数据传输距离
    • 集线器:多端口中继器,为多台终端放大信号 
  • 数字信号、模拟信号

    • 模拟信号(Analog Signal)
      • 连续的信号,适合长距离传输
      • 抗干扰能力差,受到干扰时波形变形很难纠正
    • 数字信号(Digital Signal)
      • 离散的信号,不适合长距离传输
      • 抗干扰能力强,受到干扰时波形失真可以修复

​​​​​​​

  • 数据通信模型

    •  局域网通信模型
    • 广域网通信模型
      ​​​​​​​​​​​​
  • 信道(Channel) 

    • 信道:信息传输的通道,一条传输介质上(比如网线)上可以有多条信道
      • 单工通信
        • 信号只能往一个方向传输,任何时候都不能改变信号的传输方向
        • 比如:无线电广播、有线电视广播
      • 半双工通信
        • 信号可以双向传输,但必须是交替进行,同一时间只能往一个方向传输
        • 比如:对讲机
      • 全双工通信
        • 信号可以同时双向传输
        • 比如:手机(打电话,听说同时进行)

二、数据链路层(Data Link)

  • 链路:从1个节点到相邻节点的一段物理线路(有线或无线),中间没有其他交换节点

  • 数据链路:在一条链路上传输数据时,需要有对应的通信协议来控制数据的传输
  • 不用类型的数据链路,所用的通信协议可能是不同的(传输单位是帧)
    • 广播信道:CSMA/CD协议(如果同轴电缆、集线器等组成的网络)
    • 点对点信道:PPP协议(比如2个路由器之间的信道)
  • 数据链路层的3个基本问题
    • 封装成帧、透明传输、差错检验 
  • 封装成帧(framing)

  •  最大传输单元MTU(Maximum Transfer Unit)
    • 每一种数据链路层协议都规定了所能够传送的帧的数据长度上限
    • 以太网的MTU(帧的数据部分,不包括帧首部和尾部)为1500个字节
  • 在一段数据的前后分别添加首部和尾部后构成一个帧,首部和尾部的一个重要作用帧定界
  • ​​​​​​​透明传输

  • 一个完整的帧只有一个帧开始符(SOH)和一个帧结束符(EOT),如果数据部分出现了SOH、EOT则需要进行转义,数据部分出现一个SOH、EOT、ESC则在它们前面加上ESC进行字节填充,当接受端的数据链路层收到该帧,如遇见头部ESC就去掉ESC
  • 差错检验

  • 在传输过程中可能会产生比特差错:1可能会变成0,0也可能变成1
  • 在数据链路层传送的帧中,广泛使用了循环冗余检验CRC的检错技术,在发送数据后面添加冗余码(帧检测序列FCS)
    •  FCS是根据数据部分+数据链路层首部计算得出来的
      • 假设要发送的数据M=101001(长度K=6),在发送数据的时候在后面添加一个N位的冗余码,一共发送(K+N)位数据
  •  CSMA/CD协议

    • 载波侦听多路访问(侦听道上是否有信息进行传递)/冲突检测
    • 使用CSMACD的网络可以称为是以太网(Ethernet),它传输的是以太网帧
      • 以太网帧的格式有:Ethernet V2标准(用得多)、IEEE的802.3标准
      • 为了能够检测正在发送的帧是否产生了冲突,以太网的帧至少要64字节
      • 用交换机组件的网络,已经支持全双工通信,不需要再使用CSMA/CD,传输的帧依然是以太网帧
  • Ethernet V2帧的格式

  •  Ethernet V2帧的格式是没有帧开始符和帧结束符的,而是接收端接收帧过程之遥发现没有信号跳变,就认为帧结束
  • 首部:源MAC + 目标MAC + 网络类型(IPv4或IPv6)
  • 以太网帧:首部 + 数据 + FCS
  • 数据的长度至少是:64 - 6 - 6 - 2 - 4 = 46字节 

  • 当数据部分的长度小于46字节时,数据链路层会在数据后面填充字节,接收端会将添加的字节去掉。
  • 以太网帧的数据长度:46~1500字节
  • 以太网帧的长度为:64~1518字节(源MAC(6)+目标MAC(6)+网络类型(2)+数据 + FCS(4))
  • 网卡

  •  网卡接受到帧,会进行差错校验,如果通过则接受,去掉FCS然后传输给网络层,否则丢弃

  • PPP协议(Point to Point Protocol)

  • Addresss字段:图中的值时0xFF,形同虚设,点到点信道不需要源MAC、目标MAC地址
  • Control字段:图中的值时0x03,目前没有什么作用
  • Protocol字段:内部用到的协议类型
  • 帧开始符、帧结束符:0x7E 

三、网络层(Network)

  • 网络层数据包(IP数据包,Packet)由首部、数据2部分组成
    • 数据:很多时候是由传输层传递下来的数据段(Segment)

  • 网络层首部

    •  版本(Version)

      • ​​​​​​​占4位,0b0100:IPv4、0b0110:IPv6
    • 首​​​​​​​部长度(Header Length)

      • ​​​​​​​占4位,二进制*4才是最终长度
      • 0b0101:5*4=20(最小)  、 0b1111:15*4=60(最大),固定20字节+可变40字节
    • 区分服务(Differentiated Services Field)

      • ​​​​​​​占8位,可以用于提高网络的服务质量(Qos)
    • 总长度(Total Length)

      • ​​​​​​​​​​​​​​占16位,首部 + 数据部分的长度之和。最大值是65535 ​​​​

    • 标识(Identification)

      • 占16位,数据包的ID,当数据包过大进行分片时,统一数据包所有片标识都是一样的
      • 有一个计算器专门管理数据包的ID,每发出一个数据包,ID就加1
    • 标志(Flags)

      • 占3位,第1位(Reserved Bit):保留
      • 第2位(Don't Fragment):1代表不允许分片,0代表允许分片
      • 第3位(More Fragments):1代表不是最后一片,0代表最后一片
    • 片偏移(Fragment Offset)

      • 占13位,片偏移*8=字节偏移,每片长度一定是8的整数倍
        ​​​​​​​​​​​​​​
        ​​​​​​​ 
    • 生存时间(Time To Live,TTL)

      • 占8位
      • 每个路由器在转发之前会将TTL减1,一旦发现TTL减为0,路由器回返回错误报告 
      • 用ping命令后的TTL,能够推测出对方的操作系统、中间经过了多少个路由器
    • 首部检验和、协议

四、传输层 (Transport)

  • 传输层的数据长度 = 网络层的总长度 - 网络层的首部长度 - 传输层的首部长度
  • 传输层有2个协议
    • TCP(Transmission Control Protocol),传输控制协议
    • UDP(User Datagram Protocol),用户数据报协议

​​​​​​​

  • UDP协议

  • UDP - 数据格式

    • UDP是无连接的,减少了建立和释放连接的开销
    • UDP尽极大能力交付,不保证可靠交付
    • 不需要维护一些复杂的参数,首部只有8个字节(TCP的首部至少20个字节)
    • UDP长度:占16位,首部的长度(8字节) + 数据的长度​​​​​

  • UDP - 检验和(Checksum)

    • 检验和的计算内容:伪首部(12字节) + 首部(8字节) + 数据
    • 伪首部:仅在计算检验和时起作用,并不会传递给网络层
  •  UDP - 端口(Port)

    • UDP首部中端口是占用2字节,取值范围:0~65535
    • 客户端的源端口是临时开启的随机端口
    • 防火墙可以设置开启关闭某些端口来提高安全性
    • 常用命令行
      • netstat -an:查看被占用的端口
      • netstat -anb:查看被占用的端口、占用端口的应用程序
      • telnet主机端口:查看是否可以访问主机的某个端口

  • TCP协议

  • TCP - 数据格式

  • ​​​​​​​​​​​​​​数据偏移

    • 占4位,取值范围:0x0101~0x1111
    • 数据偏移 *  4 = 首部长度(Header Length) 【包括选项(长度可变)和填充部分】
  • 保留位(Reserved)

    • ​​​​​​​占6位,目前全为0
  • 标志位(Flags)

    • ​​​​​​​占6位(URG、ACK、PSH、RST、SYN、FIN)
      • URG=1:紧急指针字段才有效,表明当前报文段中有紧急数据,应优先传送
      • ACK=1:确认号字段才有效
      • PSH=1:通知缓冲区,数据进入缓冲区,只要数据完整的接受完后立即交付给上层应用
      • RST=1:表明连接总出现严重差错,必须释放连接,然后再重新建立连接
      • SYN=1、ACK=0:表明这是一个建立连接的请求
        • 若对方同意连接,则回复SYN=1、ACK=1
      • FIN=1:表明数据已经发送完毕,要求释放连接
  • 检验和(Checksum)

    • 伪首部+首部+数据,伪首部占用12字节,仅在计算检验和时起作用,不会传递给网络层
  • 序号(Sequence Number)

    • 4字节,在传输过程的每一个字节都会有一个编号
      • 在建立连接后,序号代表:这一次传递对方的TCP数据部分的第一个字节的编号
  • 确认号(Acknowledgment Number)

    • 4字节,确认号代表:期望对方下一次传过来的TCP数据部分的第一个字节的编号
  • 窗口(Window)

    • 2字节,字段有流量控制功能,用告知对方下一次允许发送的数据大小(字节为单位)
  • TCP要点

    • 可靠传输、流量控制、拥塞控制、连接管理、建立连接、释放连接​​​​​​​
  • 五、应用层(Application)

  • 常见协议

    • 超文本传输:HTTP、HTTPS
    • 文件传输:FTP
    • 电子邮件:SMTP、POP3、IMAP
    • 动态主机配置:DHCP
    • 域名系统:DNS
  • 域名(Domain Name)

    • IP地址不方便记忆,并且不能表达组织的名称和性质,人们设计出域名(如baidu.com)
      • 为了能够访问到具体的主机,最终还是得知道目标主机的IP地址
      • 域名申请注册:https://wanwang.aliyun.com
    • 全程直接用域名,不用IP地址也不行
      • IP地址固定4个字节,域名至少10几个字节,回增加路由器的负担,浪费流量
    • 根据级别不同,域名可以分为:顶级域名、二级域名、三级域名等
  • 顶级域名的分类

    • 通用顶级域名(gTLD)
      • .com(公司)、.net(网络机构)、.org(组织机构)、.edu(教育)、.gov(部门)等
    • 国家及地区顶级域名(ccTLD)
      • .cn(中国)、.jp(日本)、.uk(英国)
    • 新通用顶级域名(New gTLD)
      • .vip、.xyz、.top、.clud、.shop等
  • 二级域名

    • 指顶级域名之下的域名
      • 在通用顶级域名下,一般指域名注册人的名称,如:google、baidu、microsoft等
      • 在国家及地区顶级域名下,一般指注册类别,如:com、edu、gov、net等
        ​​​​​​​ 
  • DNS(Domain Name System)-  域名系统

    • 利用DNS协议,可以将域名(baidu.com)解析成对应的IP地址(如:220.181.38.148)
    • DNS可以基于UDP协议,也可以基于TCP协议,服务器占用53端口
    • DNS - 服务器
      • ​​​​​​​客户端先访问最近的一台DNS服务器(客户端自己配置的DNS服务器)
      • 所有的DNS服务器都记录了DNS根域名服务器的IP地址
      • 上级DNS服务器记录了下一级DNS服务器的IP地址
      • 全球一共13台IPv4的DNS根域名服务器、25台IPv6的DNS根域名服务器
    • DNS - 常见命令
      • ip config /displaydns:查看DNS缓存记录
      • ip config /flushdns:清空DNS缓存记录
      • ping 域名
      • nslookup:域名
  • IP地址的分配

    • IP地址按照分配方式,可以分为:静态IP地址、动态IP地址
      • 静态IP地址
        • 手动设置
        • 适用场景:不怎么挪动的台式机(比如学校机房中的台式机)、服务器等
      • 动态IP地址
        • 从DHCP服务器自动获取IP地址
        • 适用场景:移动设备、无线设备等
  • DHCP(Dynamic Host Configuration Protocol)-动态主机配置协议

    • DHCP协议基于UDP协议,客户端是68端口,服务器是67端口
    • DHCP服务器会从IP地址池中,挑选一个IP地址“出租”给客户端一段时间,过期回收
    • 平时家里上网等路由器就可以充当DHCP服务器
  • DHCP - 分配IP地址的4个阶段

    • DISCOVER:发现服务器
      • 发广播包(源IP是0.0.0.0,目标IP是255.255.255.255,目标MAC是FF:FF:FF:FF:FF:FF)
    • OFFER:提供租约
      • 服务器返回可以租用的IP地址,以及租用期限、子网掩码、网关、DNS等信息
      • 可能会有多个服务器提供租约
    • REQUEST:选择IP地址
      • 客户端选择一个OFFER,发送广播包进行回应
    • ACKNOWLEDGE:确认
      • 被选中的服务器发送ACK数据包给客户端,至此,IP地址分配完毕
  • DHCP - 4个阶段​​​​​​​

  • DHCP - 细节

    • DHCP服务器可以跨网段分配IP地址吗?(DHCP服务器、客户端不在同一个网段)
      • 可以借助DHCP中继代理(DHCP Relay Agent)实现跨网段分配IP地址
    • 自动续约
      • 客户端会在租期不足的时候,自动向DHCP服务器发送REQUEST信息申请续约
    • 常用命令
      • ipconfig /all:可以看到DHCP相关的详细信息,比如租约过期时间、DHCP服务器地址等
      • ipconfig /release:释放租约
      • ipconfig /renew:重新申请IP地址、申请续约(延长租期)

最后

以上就是怕黑蜜蜂为你收集整理的网络五层协议目录一、物理层(Physical)二、数据链路层(Data Link)三、网络层(Network)四、传输层 (Transport)五、应用层(Application)的全部内容,希望文章能够帮你解决网络五层协议目录一、物理层(Physical)二、数据链路层(Data Link)三、网络层(Network)四、传输层 (Transport)五、应用层(Application)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部