数据通信与网络技术之TCP/IP
四、传输层协议
传输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IPV4协议栈中,传输层包含传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(User Datagram Protocol,UDP)两个协议。
1.TCP和UDP的应用场景
TCP
TCP为应用层协议提供可靠传输服务,发送端按顺序发送数据,接收端按顺序接收数据,其间若发生丢包、乱序等情况,TCP须负责重传和排序。
TCP的应用场景:
(1)客户端程序和服务端程序需要多次交互才能实现应用程序的功能,比如接收电子邮件使用的POP3和发送电子邮件使用的SMTP,传输文件使用的FTP,在传输层使用的都是TCP。
(2)应用程序传输的文件需要分段传输,比如在浏览器访问网页或者QQ传输文件时,在传输层均会选用TCP进行分段传输。
UDP
UDP比TCP简单,使用UDP通信不需要建立连接,通信结束也不需要释放连接,传输数据的过程中没有流量控制和可靠传输的机制。
UDP的应用场景:
(1)客户端程序和服务端程序通信,应用程序发送的数据包不需要分段。比如域名解析。
(2)实时通信。比如使用QQ、微信语音聊天、视频聊天。
(3)组播或广播通信。比如学校多媒体机房,教师的电脑屏幕需要教室的学生电脑接收,在教师的电脑安装多媒体教室服务端软件,学生电脑安装多媒体教室客户端软件,教师电脑使用组播地址或广播地址发送报文,学生电脑都能收到。这类一对多通信在传输层使用UDP。
2.传输层协议和应用层协议之间的关系
应用层协议可以分为以下3种类型:
依赖于面向连接的TCP协议:主要有Telnet、SMTP、FTP、HTTP等。
依赖于面向无连接的UDP协议:主要有SNMP、TFTP等。
既依赖于TCP协议,又依赖于UDP协议:DNS。
传输层协议和应用层协议之间的关系:
-
通常用传输层协议加一个端口号(Port)来标识一个应用层协议,展示了传输层协议和应用层协议之间的关系。
-
在传输层使用16位二进制标识一个端口,端口号取值范围是0~65535,这个数目对一个计算机来说足够用了。
3.端口号
如何与应用协议进行关联?
端口号 port
作用:区分应用进程,标识不同的应用程序
基本特征?
定义为16bit二进制信息,对应的十进制范围:(0-65535)
端口号的分类
1 熟知端口 :标识一些常用的服务应用程序。
0-1023 例如:http 80、telnet 23、ftp 20(数据端口),21(控制端口)...
2 注册端口(登记端口):标识一些服务应用服务(正在逐步地被广泛使用)
1024-49151
3 动态端口:临时分配给用户用于标识客户端的应用程序
49152-65535
常见的端口号
- HTTP默认使用TCP的80端口。
- FTP默认使用TCP的21端口。
- SMTP默认使用TCP的25端口。
- POP3默认使用TCP的110端口。
- HTTPS默认使用TCP的443端口。
- DNS默认使用UDP的53端口。
- Telnet默认使用TCP的23端口。
- 远程桌面协议(RDP)默认使用TCP的3389端口。
- Windows访问共享资源默认使用TCP的445端口。
- 微软SQL数据库默认使用TCP的1433端口。
- MySQL数据库默认使用TCP的3306端口。
端口和服务的关系
数据包的目标IP地址用于在网络中定位某一个服务器,目标端口用于定位服务器上的某个服务。
网络通信中:socket 套接字
套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。
通信数据 五元组信息:
源ip、目的ip、传输层协议、源端口号、目的端口号
Socket :【ip, 端口号】
4.TCP协议
a.TCP首部
TCP协议能够实现数据分段传输、可靠传输、流量控制、网络拥塞避免等功能,因此TCP报文首部比UDP报文首部字段要多,长度20-60B(固定首部20B,可选最多40B)。
TCP首部固定部分各字段的含义介绍
-
1)源端口和目的端口各占2字节,分别写入源端口号和目的端口号,传输层端口号用来标识一个应用层协议。
-
2)序号占4字节。首部中的序号字段值指的是本报文段所发送的数据的第一个字节的序号。
-
3)确认号占4字节,是期望收到对方下一个报文段的第一个数据字节的序号。
-
4)数据偏移占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。这个字段实际上是指出TCP报文段的首部长度。
-
5)保留占6位,保留为今后使用,但目前应置为0。
-
6)紧急URG(URGent)。当URG=l时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序传送。
-
7)确认ACK(ACKnowlegment)。仅当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。
-
8)推送PSH(PuSH)。当两个应用进程进行交互式的通信时,有时一端的应用进程希望在键入一个命令后立即就能收到对方的响应。在这种情况下,TCP就可以使用推送(Push)操作。即发送方TCP把PSH置1,并立即创建一个报文段发送出去。
-
9)复位RST(ReSeT)。当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立传输连接。RST置1还用来拒绝一个非法的报文段或拒绝打开一个连接。RST也可称为重建位或重置位。
-
10)同步SYN(SYNchronization)。TCP在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1。因此,SYN置为1就表示这是一个连接请求或连接接受报文。
-
11)终止FIN(FINish意思是“完”“终”)。TCP用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据己发送完毕,并要求释放传输连接。
-
12)窗口占2字节。窗口值是[0,216-1]之间的整数。TCP协议有流量控制功能,窗口值用来告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量(单位是字节)。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。
-
13)检验和占2字节。“检验和” 字段检验的范围包括首部和数据这两部分。
-
14)紧急指针占2字节。紧急指针仅在URG=1时才有意义,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据)。
-
15)选项长度可变,最长可达40字节。
b.TCP功能
建立连接:TCP协议在应用层协议通信之前建立连接,协商一些参数,比如最大报文段(MSS)、是否支持选择性确认(SACK)、接收窗口多少个字节等。
[ 提供面向连接的服务,连接建立、连接维护、连接释放 ]
可靠传输:能够解决在传输过程出现的乱序和数据包丢失问题,如果没按顺序到达,接收端会在缓存中等待迟到的数据包,丢包后,发送方会超时自动重传。
[ 实现解决在传输过程出现的乱序和数据包丢失问题 ]
流量控制:接收方通接收窗口大小控制发送方的发送速度。
[ 当收发不匹配时,接收方通接收窗口大小控制发送方的发送速度 ]
拥塞避免:发送方在发送数据时,会逐渐提高发送速度,如果出现丢包,会自动降低发送速度。
[ 实时了解网络运行状态,及时采取措施,保障网络高效运行 ]
c.TCP功能的详细介绍
1.差错控制
数据传输中可能会出现差错、丢包、乱序、重复包、确认丢失等问题,TCP针对这些问题实现差错控制,主要手段:
1) 确认机制 (体会首部信息中的序列号和确认号)
2) 超时重传机制 (确认的过程,发送方发送数据的同时,启动计时,若计时时间内未收到确认,则认为丢失进行重传,当然,计时时间是一个重要参数)
TCP差错控制处理过程:
(1)传输出错报文段的处理
(2)丢失报文段的处理
(3)重复报文段的处理
(4)乱序报文段的处理
(5)确认报文丢失的处理
2.流量控制
目标:控制发送方流量
方法:滑动窗口机制
思路:用接收方牵制发送方
滑动窗口的工作原理:重点理解发送窗口、接收窗口、滑动规则
发送方 设置一个发送窗口 其大小表示了在未收到确认前允许发送的数据范围 比如:现在有0-7号包,发送窗口为2,表示可发送0,1号包
接收方 设置一个接收窗口 其大小表示允许接收的包的范围 比如:现在窗口大小为2,表示可接收0,1号包
过程:
发送方顺序发送了0和1号包,假设包顺利到达目的方,接收方收到0号时,查看是否是其允许接收的范围,如是,发送确认并滑动窗口,允许接收的范围变为1,2号包。
发送方收到确认信息,如是其发送的范围,则删除副本,窗口向前滑动,这是发送方收到对0号的确认,窗口向前滑动,则允许发送的包的范围为1,2号包
核心:接收方发确认窗口向前滑动,发送方收确认时窗口向前滑动。
接收滑动发送窗口才能滑!接收方牵制了发送方,实现流量控制
3.连接管理
TCP协议是可靠传输协议,使用TCP通信的计算机在正式通信之前需要先确保对方存在,并确定协商通信的参数,比如接收端的接收窗口大小、支持的最大报文段长度(Maximum Segment Size ,MSS)、是否允许选择确认( Selective Acknowledgement ,SACK)、是否支持时间戳等。
1)连接建立
连接建立:TCP的连接建立的过程,俗称“三次握手”
所谓三次握手,是指在TCP会话的建立过程中总共交换3个TCP数据包。
TCP服务器进程时刻准备接受客户进程的连接请求,此时服务器就进入了 LISTEN(监听)状态;
① TCP客户进程也是先创建传输控制块TCB,然后向服务器发出连接请求报文,这是报文首部中的同部位SYN=1,同时选择一个初始序列号 seq=x ,此时,TCP客户端进程进入了 SYN-SENT(同步已发送状态)状态。
② TCP服务器收到请求报文后,如果同意连接,则发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己初始化一个序列号 seq=y,此时,TCP服务器进程进入了SYN-RCVD(同步收到)状态。
③TCP客户进程收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,自己的序列号seq=x+1,此时,TCP连接建立,客户端进入ESTABLISHED(已建立连接)状态。
当服务器收到客户端的确认后也进入ESTABLISHED状态,此后双方就可以开始通信了。
注意:在报文交换中,关注TCP报文段中标记的使用的如SYN、ACK,体会seq序列号,ack 确认号,另外关注在交换中TCP连接状态的变化。不同的标记标识着不同的操作,不同的状态也体现了操作的结果。
2)连接释放
连接释放:TCP连接的释放,俗称“四次握手”或“四次挥手”
① 客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。
② 服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
③ 客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
④ 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗ *∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
4.拥塞控制
拥塞和拥塞控制的基本概念
1)拥塞的定义:计算机网络中的链路容量(即宽带)、交换节点中的缓存和处理机等,都是网络的资源。在某一段时间内,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,这种情况就称为拥塞。
2)拥塞控制的定义:指网络节点采取措施避免拥塞的发生或者对已经发生的拥塞做出的响应。拥塞控制机制包括两个部分:拥塞避免和拥塞控制。
① 拥塞避免是一种“主动”机制,它的目标是使网络运行在高吞吐量、低延迟的状态,避免网络进入拥塞状态。
② 拥塞控制是一种“响应”机制,它的功能是把网络从拥塞状态恢复出来。
TCP拥塞控制的基本机制:
-
网络负载、吞吐量及拥塞控制的关系
-
TCP拥塞控制机制
TCP拥塞控制设置新变量:拥塞窗口cwnd,慢启动门限值ssthresh。 -
慢启动和拥塞避免机制
-
快速重传和快速恢复机制
5.UDP协议
UDP与TCP一样用于处理数据包,在OSI模型中,两者都位于传输层(处于IP协议的上一层)。传输的UDP是一个无连接的传输协议。UDP为应用程序提供了一种无须建立连接就可以发送IP数据包的方法。
UDP没有对发送的数据包进行排序、丢包重传、流量控制等功能。也就是说,当报文发送之后,无法得知其是否已安全完整地到达。UDP存在的意义更多的是利用UDP+端口来标识一个应用层协议。
UDP协议概括
传输层协议,提供无连接的尽力传输服务,开销小,使用端口号与应用层进行关联。
UDP的特点
1)UDP是一种无连接的、不可靠的传输层协议。
2)UDP使用尽最大努力交付,不保证可靠交付,不需要维持复杂的连接状态表。
3)UDP传输数据是面向报文的。
4)UDP没有拥塞控制,网络出现的拥塞不会降低源主机的发送速率。
5)UDP支持一对一、一对多、多对一和多对多的交互通信。
UDP的报头
共8个字节,相对于TCP的固定报头的20B,开销小。
UDP熟知端口应用信息:
UDP的复用与分用
-
多个进程用不同的端口号区分,UDP可通过复用和分用处理多个进程的服务请求。
-
发送方的UDP处理多个进程的数据报称为UDP复用。接收方根据接收的每个进程的端口号分别处理称为UDP分用。
这个过程同样适用于TCP,传输层就提供了复用与分用功能。
TCP与UDP的对比
五、网络层协议
网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位,该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。
网络层功能:实现端到端主机之间的数据传输。
关键词:路由(网络中选择路径);IP编址;分组转发
网络层的数据单位(PDU):包 packet
1.网络层协议的两个版本
TCP/IP分层模型网络层核心协议有两个版本,即IPv4和IPv6,本书将它们统称为IP。IPv6相对于IPv4进行了改进,但实现的功能是一样的。
网络层协议为传输层提供服务,负责把传输层的段发送到接收端。IP协议实现网络层协议的功能,发送端将传输层的段加上IP首部,IP首部包括源IP地址和目标IP地址,加了IP首部的段被称为“数据包”,网络中的路由器根据IP首部转发数据包。
a.TCP/IPv4协议栈
TCP/IPv4协议栈的网络层有4个协议:ARP、IPv4、ICMP和IGMP,其中ARP、ICMP和IGMP为辅助协议。
TCP段、UDP报文、ICMP报文、IGMP报文都可以封装在IPv4数据包中,使用协议号区分,也就是说IPv4使用协议号标识上层协议。
b.TCP/IPv6协议栈
TCP/IPv6协议栈的网络层没有ARP和IGMP协议,对ICMP协议的功能做了很大的扩展,ARP的功能和IGMP协议功能也被嵌入到ICMPv6中,分别是邻居发现(Neighbor Discovery,ND)协议和组播侦听器发现(Multicast Listener Discovery,MLD)协议。
2.IP协议(Internet Protocol)
IP的基本功能
网络上的每个主机和网关都有IP模块,IP的主要功能就是将数据报经由各个IP模块选择合适的路径(称为路由选择)接力传送直到目的模块。
1)寻址:寻找路由进行数据转发。
2)数据报的封装:封装后形成IP数据报。
3)分片与重组:IP数据报根据MTU的大小可以在源、目的节点进行拆分和重组。
IP分组交付
是指在网络中路由器转发IP分组的物理传输过程与数据报转发交付机制。
分组交付可分为直接交付和间接交付两类:
-
直接交付:对于主机来说,就是目的主机在一个网段的传输。对于路由器来说,就是无需借助其他路由器就可以到达的目的网络,即到达路由器的直连网络。
-
间接交付:对于主机来说,就是目的主机在不同网段的传输。对于路由器来说,就是必须借助其他路由器才能到达目的网络。
IP的特点:
1)IP是一种不可靠、无连接的数据报传送服务协议。
2)IP是点对点的网络层通信协议。
3)IP的介质无关性(IP向传输层屏蔽了网络低层的差异)。
IP报头
IP又称为网际协议,它负责Internet上网络之间的通信,并规定了将数据包从一个网络传输到另一个网络应遵循的规则,是TCP/IP协议的核心。
IPV4报头:(范围:20-60B)
IP包:{IP报头+传输层分段}
IP首部
1)版本占4位,指IP协议的版本。IP协议目前有两个版本IPv4和IPv6。
2)首部长度占4位,可表示的最大十进制数值是15。
3)区分服务占8位,配置计算机给特定应用程序的数据包添加一个标志,然后再配置网络中的路由器优先转发这些带标志的数据包,在网络带宽比较紧张的情况下,也能确保这种应用的带宽有保障,这就是区分服务,为这种服务确保服务质量(Quality of Service,QoS)。
4)总长度指IP首部和数据之和的长度,也就是数据包的长度,单位为字节。总长度字段为16位,因此数据包的最大长度为216-1=65535字节。
5)标识(Identification)占16位。IP软件在存储器中维持一个计数器,每产生一个数据包,计数器就加1,并将此值赋给标识字段。
6)标志(Flag)占3位,但目前只有两位有意义。标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据包。MF=0表示这己这个分片是若干数据包片中的最后一个。标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。只有当DF=0时才允许分片。
7)片偏移占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。
8)生存时间字段(Time To Live,TTL),表明是数据包在网络中存在多长时间,先在TTL字段的功能改为“跳数限制”,即能够经过多少个路由器。
9)协议占8位,协议字段指出此数据包携带的数据是使用何种协议,以便使目的主机的网络层知道应将数据部分上交给哪个处理过程。
10)首部检验和占16位,这个字段只检验数据包的首部,但不包括数据部分。这是因为数据包每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。
11)源IP地址占32位。
12)目标IP地址占32位。
3.ICMP协议
ICMP(Internet Control Message Protocol)即Internet控制报文协议,是TCP/IPv4网络层的一个协议。
功能:
用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
ICMP请求和响应报文,用来测试到某个地址网络是否畅通。
-
请求报文类型值为8,报文代码为0。
-
ICMP响应报文,类型值为0,报文代码为0。
ICMP报文的类型和代码所代表的含义:
ICMP的五种差错报告
1)终点不可到达。当路由器或主机没有到达目标地址的路由时,就丢弃该数据包,给源点发送终点不可到达报文。
2)源点抑制。当路由器或主机由于拥塞而丢弃数据包时,就会向源点发送源点抑制报文,使源点知道应当降低数据包的发送速率。
3)改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据包发送给另外的路由器(可通过更好的路由)。
4)时间超时。当路由器收到生存时间为零的数据包时,除丢弃该数据包外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据包的全部数据包片时,就把已收到的数据包片都丢弃,并向源点发送时间超过报文。
5)参数问题。当路由器或目的主机收到的数据包的首部中有的字段的值不正确时,就丢弃该数据包,并向源点发送参数问题报文。
ICMP的应用举例:
- ICMP使用分组网间探测命令ping测试两个主机之间的连通性。
- ping命令使用ICMP回应请求与应答报文。
Ping命令:网络中测试主机间的连通性。
4.IGMP协议
Internet组管理协议IGMP(Internet Group Management Protocol)
功能:
在IPv4环境中提供组管理的协议,参加多播的主机和路由器利用IGMP交换多播成员资格信息,以支持主机加入或离开多播组播。在IPv6环境中,组管理协议已经合并到ICMPv6协议中,不再需要单独的组管理协议。
工作原理:
IGMP报文主要进行组成员的查询和报告,IGMP采用两种消息报文:
-
成员关系查询:路由器周期性地向自己的所有接口发送一般查询报文,以了解多播组的存在。
-
成员关系报告:主机用该消息响应路由器的查询,报告自己加入的组,主动发送成员关系报告。
5.APR
1.APR和RAR
APR
地址解析协议(Address Resolution Protocol,ARP)是IPv4中必不可少的一种协议,它的主要功能是将IP地址解析为MAC地址,维护IP地址与MAC地址的映射关系的缓存,即ARP表项,实现网段内重复IP地址的检测。
RARP
TCP/IP协议体系用地址解析协议(ARP)来实现将IP地址映射(或转换)为MAC地址。而另一个逆向地址解析协议(RARP)用来实现将MAC地址映射(或转换)为IP地址。
2.ARP的功能:
- 将IP解析为MAC地址
- 维护ARP缓存表(ip和mac的映射关系)
3.以太网
以太网(Ethernet)是一种主要的计算机局域网技术。早期,IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容,发展中以太网有更多的技术标准不断涌现。以太网是应用最普遍的局域网技术,取代了其他局域网技术如令牌环、FDDI和ARCNET。
以太网技术主要用于局域网中,其发展可归纳为以下阶段:
- 传统以太网技术 典型标志:传输速率10Mbps
组网技术标准 10base2 10base5 10baseT
Base 基带信号(2,5 分别表示的早期的使用同轴电缆的以太网络,2表示使用细缆其最大传输为185米,5表示使用粗缆最大传输距离为500米,T表示TP双绞线,后期发展中用TP代替了同轴电缆)
-
快速以太网技术 典型标志:传输速率100Mbps
组网技术标准 100BASET 100BaseF等等F代表fiber光纤 -
高速以太网技术 典型标志:传输速率1000Mbps(1G)或更高
组网技术标准 1000BaseFX 1000BaseT4 1000baseSX
4.MAC地址
MAC地址也叫物理地址、硬件地址,由网络设备制造商生产时烧录在网卡(Network lnterface Card,NIC)的闪存芯片。MAC地址在计算机里都是以二进制表示的,由48位二进制组成。
a.作为物理地址,如何保证地址唯一性?
第2层以太网MAC地址是一种表示为12个十六进制数字的48位二进制值。IEEE 要求厂商遵守两条简单的规定:
-
必须使用该供应商分配的OUI作为前3个字节
-
OUI相同的所有MAC地址的最后3个字节必须分配唯一的值
b.MAC地址的指派
-
前24bit(OUI)公司统一标识符
-
后24bit 由公司来统一管理以区分其生产的网卡
c.MAC与IP地址
MAC 地址
- 该地址不会改变
- 类似于人的名字
- 称为物理地址,因为实际分配给主机的网卡
IP 地址
- 类似于人的住址
- 以主机的实际位置为基础
- 称为逻辑地址,因为是按逻辑分配的
- 由网络管理员分配给每台主机
计算机要实现通信,同时需要物理MAC地址和逻辑IP地址
d.ARP协议的工作过程
- ARP 表 :用于查找映射至目的 IPv4 地址的数据链路层地址
当节点从介质收到帧时,可将源 IP 和 MAC 地址记录为 ARP 表中的映射
- ARP 请求 :ARP请求使用广播帧
发送到以太网LAN中所有设备的第2层广播
与广播中的IP地址匹配的节点将会作出应答
如果没有设备相应ARP请求,就无法创建帧,所以会丢弃数据包
- ARP 响应 :ARP响应使用单播帧
单独向源设备响应其地址信息
例:
假设A访问B,当网络层封装完IP包即封装了源IP即A的IP地址,目的IP即B的ip地址
继续传输,需要在数据链路层封装时,就需要A,B的物理地址,即MAC地址来进一步封装
首先,查看A的ARP缓存表,是否有关于B的IP的地址的记录。
如果有,那么直接取出封装。
如果没有,A设备则在其网络内发送ARP请求包(广播包)
当目的设备收到时,将向A发送ARP响应包(单播),并同时学习目的设备发来的ip和mac地址,并将这个记录在ARP缓存表中。
注意:二层MAC地址类型
1 广播MAC地址 FF-FF-FF-FF-FF-FF
2 组播MAC地址 01-00-5E- - -
3 单播MAC地址 确定的某个MAC地址
同一网段通信和跨网段通信:
主要区别:
同一网段内 目的MAC地址封装的是目的设备的MAC地址
不同网段内 目的MAC地址封装的是网关的MAC地址
六、网络接口层协议
TCP/IPv4协议栈的网络接口层实际上并不是因特网协议组中的一部分,它是数据包从一个设备的网络层传输到另外一个设备网络层的方法。这个过程包括将数据包添加数据链路层首部以封装成帧、通过物理媒介(如光纤、双绞线、无线等)传输数据、接收端接收数据后去掉数据链路层封装的首部并将接收到的数据包传到网络层。
TCP/IPV4协议栈的网络接口层包含了OSI参考模型的数据链路层和物理层的功能。网络设备的接口(计算机的网卡、路由器的接口)实现数据链路层和物理层的功能。
七、网络链路层协议
常见的数据链路层协议有CSMA/CD(应用于以太局域网中)、CSMA/CA(应用于无线局域网中WLAN),PPP、HDLC、帧中继、X.25等(应用于广域网中WAN),这些数据链路层协议都具备三个基本功能,即封装成帧、透明传输和差错检测。
封装成帧
数据链路层的协议数据单元为帧。
帧的普适性格式为:帧头+数据包(packet:来源于网络层ip协议)+ 帧尾
不同的数据链路层协议帧头和帧尾封装的内容略有不同,但功能类似。(另外,关注的就是前面讲述的关于ip分片与重组,涉及到不同的数据链路层协议其封装的数据荷载长度限制不同,就是我们说的MTU,以太网链路MTU为1500字节)
帧头主要实现的功能:
①帧定界 (标志帧的开始、结束)
②编址 (源地址、目的地址(对于以太网,使用MAC地址))
帧尾主要实现的功能:差错检测
透明传输
目标:实现传输内容的用户无关性。
背景:不同的数据链路层协议选择的转义字符不同。若传输内容与转义符一致会引发错误。
方法:比如:PPP协议中零比特插入法
工作原理:为了解决透明传输位流,避免传输的位流中含有“01111110”模式,数据链路层成帧机制采用位填充技术,即“0”插入技术。“0”位插入技术是指发送方在发送数据过程中对数据位进行扫描并计数,若遇到连续5个“1”位时,自动在其后插入1个“0”位。当接收方收到连续5个“1”位,且后面跟着1个“0”位时,则判断该“0”位为发送方填充的,自动将其删去。
例:发送方发送的数据是01111100110,经ppp协议0比特插入法后,实际发送的数据是:011111000110
以太网数据链路层的主要协议为csma/cd(carrier sense multi access collision detection)带有冲突检测的载波监听多路访问控制技术
作用:在共享环境中解决介质的访问控制问题
-
先听后发 (发送前监听信道,判断信道是否空闲,闲则发送忙则等待)
-
边发边听(以避免同发而后续引发冲突)
-
冲突停止
-
延时再发(计算退避时间,等待退避时间后再发送)
csma/cd主要应用于以太网的共享局域环境中,但是对于全双工状态下则不再采用
对于WLAN无线局域网中,数据链路层采用 CSMA/CA 来解决无线局域环境中的介质访问控制问题。
差错检测
现实的通信链路都不会是理想的。这就是说,比特在传输过程中可能会产生差错。为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检验措施。目前在数据链路层广泛使用了循环冗余检验(Cyclic Redundancy Check,CRC)的差错检验技术。
差错检测在帧尾实现,这个字段叫帧校验序列(Frame Check Sequence,FCS)。
帧的数据部分和数据链路层首部计算出帧校验序列(FCS)。不同的数据链路层协议帧校验序列的长度和算法也不尽相同。
如CRC算法:
循环冗余校验方法是数据通信中差错检测的重要方法,它对随机错码和突发错码均能以较低的冗余度进行严格检查。循环冗余校验码(Cyclic Redundancy Check,CRC),简称CRC校验码。在发送方产生一个循环冗余校验码,附加在信息位后面一起发送到接收方,接收方将收到的信息按发送方形成循环冗余校验码相同的算法进行校验以检测是否出错。
CRC校验码的计算方法
-
将生成多项式转换为对应的二进制位串,记为G。
-
将待传输的信息位进行r(crc校验码的位数,由生成多项式的最高次幂决定)位的模2乘法运算,其结果就是在原信息位后面加了r个0.记为M。
-
将M除以G,余数即为CRC校验码。(除法过程,取余规则采用异或逻辑操作)
例:
余数R为0010(补足r=4位),因此,信息M=101001101的CRC校验码为:1010011010000+0010=1010011010010。
八、物理层
物理层设计时主要考虑的是如何在连接开放系统的传输介质上传输各种数据的比特流;
计算机网络可以利用的物理传输介质与传输设备存在着很大的差异,设计物理层的主要目的是向数据链路层屏蔽通信技术的差异性;
数据链路实体通过与物理层的接口,将数据传送给物理层,通过物理层按比特流的顺序,将信号传输到另一个数据链路实体。
元素:
- 物理介质和相关连接器
- 介质中位的表示
- 数据和控制信息编码
- 网络设备上的发送端和接收端电路
物理层的接口特征:
- 机械特性
- 电气特性
- 功能特性
- 规程特性
结尾
千万别让人偷走了你的梦,梦想是你自己的,不要让别人左右你的决定。
一些思考题
1.TCP/IP协议按什么分层?写出每层协议实现的功能。
答:TCP/IP协议按功能分层。分为应用层、传输层、网络层、网络接口层。应用层协议实现应用程序的功能。传输层主要为两台主机上的应用程序提供端到端的通信,实现可靠传输和不可靠传输。网络层负责为数据包在不同网段选择转发路径。网络接口层实现数据包从一个设备的网络层传输到另外一个设备的网络层。
2.列出几个常见的应用层协议。
答:DNS、DHCP、HTTP、FTP、POP3、SMTP。
3.应用层协议要定义哪些内容?
答:客户端能够向服务器发送哪些请求(方法或命令)。客户端访和服务器命令交互顺序,比如POP3协议,需要先验证用户身份才能收邮件。服务器有哪些响应(状态代码),每种状态代码代表什么意思。 定义协议中每种报文的格式:有哪些字段,字段是定长还是变长,如果是变长,字段分割符是什么,都要在协议中定义。
4.写出传输层的2个协议以及它们的应用场景。
答:TCP/IP协议传输层有两个协议TCP(传输控制协议)和UDP(用户数据报协议)。TCP应用于客户端程序和服务端程序需要多次交互才能实现应用程序的功能,应用程序传输的文件需要分段传输的场景。UDP应用于客户端程序和服务端程序通信、应用程序发送的数据包不需要分段的场景,实时通信、组播或广播通信的场景。
5.写出网络层的4个协议以及每个协议的功能。
答:TCP/IP协议栈网络层有四个协议,ARP、IP、ICMP和IGMP。IP是一种网络层协议,提供的是一种不可靠的服务,它只是尽可能快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。ICMP是IP协议的附属协议,IP层用它来与其他主机或路由器交换错误报文和其他重要信息。IGMP是Internet组管理协议,主机与本地路由器之间使用Internet组管理协议(IGMP)来进行组播组成员信息的交互,IGMP协议本课程不做过多讲解。ARP协议在以太网中负责将IP地址解析出MAC地址。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)