计算机网络各层主要协议报文格式详解

应用层(典型设备:应用程序, 如FTP, SMTP , HTTP)

首先我们可以看到在应用层,根据当前的需求和动作,结合应用层的协议,有我们确定发送的数据内容,我们把这些数据放到一个缓冲区内,然后形成了应用层的报文data。

主要协议如下:

  • HTTP (Hypertext Transfer Protocol )超文本传输协议 <端口号 80>, 面向事务的应用层协议。
  • DNS (Domain Name System )域名解析<端口号53>
  • FTP (File Transfer Protocol )文件传输协议<端口号21>减少或消除不同操作系统下处理文件的不兼容性。
  • SMTP (Simple Mail Transfer Protocol )简单邮件传输协议 <端口号25> 用于发送邮件。
  • Gopher (英文原义:The Internet Gopher Protocol 中文释义:(RFC-1436)网际Gopher协议)
  • NNTP (Network News Transport Protocol)RFC-977)网络新闻传输协议
  • SIP 信令控制协议
  • RTCP (RTP Control Protocol)RTP 控制协议
  • RTSP (Real Time Streaming Protocol)实时流传输协议
  • DHCP (Dynamic Host Configuration Protocol)动态主机分配协议, 使用 UDP 协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配 IP 地址, 给用户或者内部网络管理员作为对所有计算机作中央管理的手段。实现即插即用连网。
  • BOOTP (BOOTstrapProtocol) 引导程序协议/ 自举协议, 使用UDP 来使 一个无盘工作站自动获取配置信息。静态的配置协议
  • IMAP4 (Internet Message Access Protocol 4) Internet 信息访问协议的第 4 版本
  • IRC (Internet Relay Chat )网络聊天协议
  • XMPP 可扩展消息处理现场协议
  • POP3 (Post Office Protocol 3) 即邮局协议的第3 个版本, 用于接受邮件。
  • SNMP (Simple Network Management Protocol),简单网络管理协议
  • SSH (Secure Shell )安全外壳协议
  • TELNET 远程登录协议 <端口号23>
  • RPC (Remote Procedure Call Protocol )(RFC- 1831)远程过程调用协议
  • TLS (Transport Layer Security Protocol )安全传输层协议
  • SDP( Session Description Protocol )会话描述协议
  • SOAP (Simple Object Access Protocol )简单对象访问协议
  • GTP 通用数据传输平台
  • STUN (Simple Traversal of UDP over NATs , NAT 的UDP 简单穿越) 是一种网络协议
  • NTP (Network Time Protocol )网络校时协议。

传输层(典型设备: 进程和端口) 数据单元:数据段 (Segment)

这些数据通过传输层发送,比如tcp协议。所以它们会被送到传输层处理,在这里报文打上了传输头的包头,主要包含端口号,以及tcp的各种制信息,这些信息是直接得到的,因为接口中需要指定端口。这样就组成了tcp的数据传送单位segment。tcp是一种端到端的协议,利用这些信息,比如tcp首部中的序号确认序号,根据这些数字,发送的一方不断的进行发送等待确认,发送一个数据段后,会开启一个计数器,只有当收到确认后才会发送下一个,如果超过计数时间仍未收到确认则进行重发,在接受端如果收到错误数据,则将其丢弃,这将导致发送端超时重发。通过tcp协议,控制了数据包的发送序列的产生,不断的调整发送序列,实现流控和数据完整。

主要有协议如下:

  • TCP (Transmission Control Protocol )传输控制协议提供可靠的面向连接的服务,传输数据前须先建立连接,结束后释放。可靠的全双工信道。可靠、有序、无丢失、不重复
  • UDP (User Datagram Protocol )用户数据报协议发送数据前无需建立连接,不使用拥塞控制,不保证可靠交付,最大努力交付
  • DCCP (Datagram Congestion Control Protocol )数据报拥塞控制协议
  • SCTP (STREAM CONTROL TRANSMISSION PROTOCOL )流控制传 输协议
  • RTP (Real-time Transport Protocol )实时传送协议
  • RSVP (Resource ReSer Vation Protocol )资源预留协议
  • PPTP ( Point to Point Tunneling Protocol )点对点隧道协议

网络层(典型设备:路由器,防火墙、多层交换机) 数据单元:数据包 (Packet)

然后待发送的数据段送到网络层,在网络层被打包,这样封装上了网络层的包头,包头内部含有源及目的的ip地址,该层数据发送单位被称为packet。网络层开始负责将这样的数据包在网络上传输,如何穿过路由器,最终到达目的地址。在这里,根据目的ip地址,就需要查找下一跳路由的地址。首先在本机,要查找本机的路由表,在windows上运行route print就可以看到当前路由表内容,有如下几项:

Active Routes Default Route Persistent Route.

整个查找过程是这样的:

(1) 根据目的地址,得到目的网络号,如果处在同一个内网,则可以直接发送。
(2) 如果不是,则查询路由表,找到一个路由。
(3) 如果找不到明确的路由,此时在路由表中还会有默认网关,也可称为缺省网关,IP用缺省的网关地址将一个数据传送给下一个指定的路由器,所以网关也可能是路由器,也可能只是内网向特定路由器传输数据的网关。
(4) 路由器收到数据后,它再次为远程主机或网络查询路由,若还未找到路由,该数据包将发送到该路由器的缺省网关地址。而数据包中包含一个最大路由跳数,如果超过这个跳数,就会丢弃数据包,这样可以防止无限传递。路由器收到数据包后,只会查看网络层的包裹数据,目的ip。所以说它是工作在网络层,传输层的数据对它来说则是透明的。

如果上面这些步骤都没有成功,那么该数据报就不能被传送。如果不能传送的数据报来自本机,那么一般会向生成数据报的应用程序返回一个“主机不可达”或 “网络不可达”的错误。

以windows下主机的路由表为例,看路由的查找过程

======================================================================

Active Routes:

Network Destination Netmask Gateway Interface Metric

0.0.0.0 0.0.0.0 192.168.1.2 192.168.1.101 10

127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1

192.168.1.0 255.255.255.0 192.168.1.101 192.168.1.101 10

192.168.1.101 255.255.255.255 127.0.0.1 127.0.0.1 10

192.168.1.255 255.255.255.255 192.168.1.101 192.168.1.101 10

224.0.0.0 240.0.0.0 192.168.1.101 192.168.1.101 10

255.255.255.255 255.255.255.255 192.168.1.101 192.168.1.101 1

Default Gateway: 192.168.1.2

Network Destination 目的网段

Netmask 子网掩码

Gateway 下一跳路由器入口的ip,路由器通过interface和gateway定义一调到下一个路由器的链路,通常情况下,interface和gateway是同一网段的。

Interface 到达该目的地的本路由器的出口ip(对于我们的个人pc来说,通常由机算机A的网卡,用该网卡的IP地址标识,当然一个pc也可以有多个网卡)。

网关这个概念,主要用于不同子网间的交互,当两个子网内主机A,B要进行通讯时,首先A要将数据发送到它的本地网关,然后网关再将数据发送给B所在的网关,然后网关再发送给B。

默认网关,当一个数据包的目的网段不在你的路由记录中,那么,你的路由器该把那个数据包发送到哪里!缺省路由的网关是由你的连接上的default gateway决定的,也就是我们通常在网络连接里配置的那个值。

通常interface和gateway处在一个子网内,对于路由器来说,因为可能具有不同的interface,当数据包到达时,根据Network Destination寻找匹配的条目,如果找到,interface则指明了应当从该路由器的那个接口出去,gateway则代表了那个子网的网关地址。

第一条 0.0.0.0 0.0.0.0 192.168.1.2 192.168.1.101 10

0.0.0.0代表了缺省路由。该路由记录的意思是:当我接收到一个数据包的目的网段不在我的路由记录中,我会将该数据包通过192.168.1.101这个接口发送到192.168.1.2这个地址,这个地址是下一个路由器的一个接口,这样这个数据包就可以交付给下一个路由器处理,与我无关。该路由记录的线路质量 10。当有多个条目匹配时,会选择具有较小Metric值的那个。

第三条 192.168.1.0 255.255.255.0 192.168.1.101 192.168.1.101 10

直联网段的路由记录:当路由器收到发往直联网段的数据包时该如何处理,这种情况,路由记录的interface和gateway是同一个。当我接收到一个数据包的目的网段是192.168.1.0时,我会将该数据包通过192.168.1.101这个接口直接发送出去,因为这个端口直接连接着192.168.1.0这个网段,该路由记录的线路质量 10 (因interface和gateway是同一个,表示数据包直接传送给目的地址,不需要再转给路由器)。

一般就分这两种情况,目的地址与当前路由器接口是否在同一子网。如果是则直接发送,不需再转给路由器,否则还需要转发给下一个路由器继续进行处理。

查找到下一跳ip地址后,还需要知道它的mac地址,这个地址要作为链路层数据装进链路层头部。这时需要arp协议,具体过程是这样的,查找arp缓冲,windows下运行arp -a可以查看当前arp缓冲内容。如果里面含有对应ip的mac地址,则直接返回。否则需要发生arp请求,该请求包含源的ip和mac地址,还有目的地的ip地址,在网内进行广播,所有的主机会检查自己的ip与该请求中的目的ip是否一样,如果刚好对应则返回自己的mac地址,同时将请求者的ip mac保存。这样就得到了目标ip的mac地址。

主要协议如下:

  • IP(IPv4 · IPv6) Internet Protocol(网络之间互连的协议)
  • ARP : Address Resolution Protocol即地址解析协议, 实现通过IP地址得知其物理地址。
  • RARP : Reverse Address Resolution Protocol 反向地址转换协议允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。
  • ICMP : (Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议, 用于在IP主机、路由器之间传递控制消息。
  • IGMP : Internet 组管理协议(IGMP)是因特网协议家族中的一个组播协议, 用于 IP 主机向任一个直接相邻的路由器报告他们的组成员情况。
  • RIP : 路由信息协议(RIP)是一种在网关与主机之间交换路由选择信息的标准。
  • OSPF : (Open Shortest Path First开放式最短路径优先).
  • IS-IS: (Intermediate System to Intermediate System Routing Protocol)中间系统到中间系统的路由选择协议.
  • IPsec: “Internet 协议安全性”是一种开放标准的框架结构, 通过使用加密的安全服务以确保在 Internet 协议 (IP) 网络上进行保密而安全的通讯。
  • BGP : Border Gateway Protocol 边界网关协议,用来连接Internet 上独立系统的路由选择协议.采用路径向量路由选择协议。

数据链路层 (典型设备: 网卡,网桥,交换机) 数据单元:帧 (Frame)

将mac地址及链路层控制信息加到数据包里,形成Frame,Frame在链路层协议下,完成了相邻的节点间的数据传输,完成连接建立,控制传输速度,数据完整。

主要协议如下:

  • ARQ (Automatic Repeat-reQuest )自动重传请求协议,错误纠正协议之一,包括停止等待ARQ 协议和连续ARQ 协议,错误侦测、正面确认、逾时重传与负面确认继以重传等机制。
  • 停止等待协议:CSMA/CD (Carrrier Sense Multiple Access with Collision Detection)载波监听多点接入/碰撞检测协议。总线型网络,协议的实质是载波监听和碰撞检测。载波监听即发数据前先检测总线上是否有其他计算机在发送数据,如暂时不发数据,避免碰撞。碰撞检测为计算机边发送数据边检测信道上的信号电压大小。
  • PPP (Point-to-Ponit Protocol)点对点协议面向字节,由三部分组成:一个将IP 数据报封装到串行链路的方法;一个用于建立、配置和测试数据链路连接的链路控制协议
  • LCP (Link Control Protocol) :一套网络控制协议NCP 。
  • HDLC (High-Level Data Link Control )高级数据链路控制同步网上传输数据、面向比特的数据链路层协议。
  • ATM (Asynchronous Transfer Mode )异步传递方式,建立在电路交换和分组交换的基础上的一种面向连接的快速分组交换技术。 “异步”是指将ATM 信元“异步插入”到同步的 SDH 比特流中。如同步插入则用户在每帧中所占的时隙相对位置固定不变。“同步”是指网络中各链路上的比特流都是受同一非常精确的主时钟的控制。
  • SLIP (串行线路接口协议)

物理层(典型设备:中继器,集线器、网线、HUB) 数据单元:比特 (Bit)

物理线路则只负责该数据以bit为单位从主机传输到下一个目的地。

下一个目的地接受到数据后,从物理层得到数据然后经过逐层的解包 到 链路层 到 网络层,然后开始上述的处理,在经网络层 链路层 物理层将数据封装好继续传往下一个地址。

在上面的过程中,可以看到有一个路由表查询过程,而这个路由表的建立则依赖于路由算法。也就是说路由算法实际上只是用来路由器之间更新维护路由表,真正的数据传输过程并不执行这个算法,只查看路由表。这个概念也很重要,需要理解常用的路由算法。而整个tcp协议比较复杂,跟链路层的协议有些相似,其中有很重要的一些机制或者概念需要认真理解,比如编号与确认,流量控制,重发机制,发送接受窗口。

  • 以太网物理层 · 调制解调器 · PLC · SONET/SDH · G.709 · 光导纤维 · 同轴电缆 · 双绞线

参考博客
https://www.cnblogs.com/c0liu/p/8149571.html

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值