计算机⽹络各层主要协议报⽂格式详解
应⽤层(典型设备:应⽤程序, 如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的数据传送单位gment。tcp是⼀种端到端的协议,利⽤这些信息,⽐如tcp⾸部中的序号确认序号,根据这些数字,发送的⼀⽅不断的进⾏发送等待确认,发送⼀个数据段后,会开启⼀个计数器,只有当收到确认后才会发送下⼀个,如果超过计数时间仍未收到确认则进⾏重发,在接受端如果收到错误数据,则将其丢弃,这将导致发送端超时重发。通过tcp协议,控制了数据包的发送序列的产⽣,不断的调整发送序列,实现流控和数据完整。
主要有协议如下:
TCP (Transmission Control Protocol )传输控制协议提供可靠的⾯向连接的服务,传输数据前须先建⽴连接,结束后释放。可靠的全双⼯信道。可靠、有序、⽆丢失、不重复
UDP (Ur 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 : Rever 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)中间系统到中间系统的路由选择协议.
IPc: “Internet 协议安全性”是⼀种开放标准的框架结构, 通过使⽤加密的安全服务以确保在 Internet 协议 (IP) ⽹络上进⾏保密⽽安全的通讯。
BGP : Border Gateway Protocol 边界⽹关协议,⽤来连接Internet 上独⽴系统的路由选择协议.采⽤路径向量路由选择协议。
数据链路层 (典型设备: ⽹卡,⽹桥,交换机) 数据单元:帧 (Frame)
将mac地址及链路层控制信息加到数据包⾥,形成Frame,Frame在链路层协议下,完成了相邻的节点间的数据传输,完成连接建⽴,控制传输速度,数据完整。
主要协议如下:
ARQ (Automatic Repeat-reQuest )⾃动重传请求协议,错误纠正协议之⼀,包括停⽌等待ARQ 协议和连续ARQ 协议,错误侦测、正⾯确认、逾时重传与负⾯确认继以重传等机制。
停⽌等待协议:CSMA/CD (Carrrier Sen 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 · 光导纤维 · 同轴电缆 · 双绞线