一起学习交流~

网络协议基础

路由 jsq 10个月前 (12-06) 432次浏览 已收录 0个评论

网络协议基础

一、OSI参考模型

OSI参考模型由ISO(International Organization for Standardization,国际标准化组织)提出

OSI参考模型是主要的网络架构和通信模型,描述了数据和网络信息如何通过网络介质从一台计算机的应用程序传输到另一台计算机的应用程序,OSI参考模型对网络通信工作进行了分层。

OSI参考模型的主要目的是让不同厂商的设备能够互相通信

1、使用OSI分层模型的主要优点

  • (1)降低复杂度:由难到简。
  • (2)标准化端口:网络组成部分标准化,多厂商开发和支持。
  • (3)便于模块化设计:允许不同类型的网络硬件和软件互相通信。
  • (4)技术的互操作性:分成次的设计防止某层的变化影响其他层次。
  • (5)简化网络教学。

2、OSI模型各层次内容详解

OSI参考模型单位内容/作用
物理层Bit(比特)电气化信号/物理规律等; 物理层定义了传输线缆和端口,完成逻辑上”0“和”1“; 上传输介质承载物理信号(光/电信号)的转换,实现物理信号的发送和接收
逻辑链路层Frame(帧)ppp、以太(ethernet); 在通过物理链路相连接的节点之间建立逻辑意义上的数据链路,在数据链路上实现数据点到点或点到多点方式的直接通信
网络层Packet(包)路由或者结构化编址; 根据数据中包含的网络层信息,实现数据从任何一个节点到另外一个节点的传输过程
传输层Segment(段)TCP和UDP,形成会话和表示应用; 建立、维护和撤销一次端到端的数据传输过程,控制传输节奏的快慢,调整数据的排序等
会话层PDU(协议数据单元)管理会话用的系统(windows、linux、VRP); 在通信双方之间建立、管理和终止会话,确定双方是否应该开始进行某一方发起的通信等
表示层PDU(协议数据单元)数据格式化,将数据表示为能理解的格式; 提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别
应用层PDU(协议数据单元)人机交互的层面,为应用程序提供网络服务; 为用户应用软件提供丰富的系统端口
img

OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 。

一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部信息。网桥工作时,是以MAC头部来决定转发端口的,因此显然它是数据链路层的设备。 具体说: 物理层:网卡,网线,集线器,中继器,调制解调器

数据链路层:网桥,交换机

网络层:路由器

网关工作在第四层传输层及其以上

集线器是物理层设备,采用广播的形式来传输信息。

交换机就是用来进行报文交换的机器。多为链路层设备(二层交换机),能够进行地址学习,采用存储转发的形式来交换报文.。

路由器的一个作用是连通不同的网络,另一个作用是选择信息传送的线路。选择通畅快捷的近路,能大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率。

交换机和路由器的区别

交换机拥有一条很高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条总线上,控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部交换矩阵迅速将数据包传送到目的端口,目的MAC若不存在则广播到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部MAC地址表中。 使用交换机也可以把网络“分段”,通过对照MAC地址表,交换机只允许必要的网络流量通过交换机。通过交换机的过滤和转发,可以有效的隔离广播风暴,减少误包和错包的出现,避免共享冲突。 交换机在同一时刻可进行多个端口对之间的数据传输。每一端口都可视为独立的网段,连接在其上的网络设备独自享有全部的带宽,无须同其他设备竞争使用。当节点A向节点D发送数据时,节点B可同时向节点C发送数据,而且这两个传输都享有网络的全部带宽,都有着自己的虚拟连接。假使这里使用的是10Mbps的以太网交换机,那么该交换机这时的总流通量就等于2×10Mbps=20Mbps,而使用10Mbps的共享式HUB时,一个HUB的总流通量也不会超出10Mbps。 总之,交换机是一种基于MAC地址识别,能完成封装转发数据包功能的网络设备。交换机可以“学习”MAC地址,并把其存放在内部地址表中,通过在数据帧的始发者和目标接收者之间建立临时的交换路径,使数据帧直接由源地址到达目的地址。

从过滤网络流量的角度来看,路由器的作用与交换机和网桥非常相似。但是与工作在网络物理层,从物理上划分网段的交换机不同,路由器使用专门的软件协议从逻辑上对整个网络进行划分。例如,一台支持IP协议的路由器可以把网络划分成多个子网段,只有指向特殊IP地址的网络流量才可以通过路由器。对于每一个接收到的数据包,路由器都会重新计算其校验值,并写入新的物理地址。因此,使用路由器转发和过滤数据的速度往往要比只查看数据包物理地址的交换机慢。但是,对于那些结构复杂的网络,使用路由器可以提高网络的整体效率。路由器的另外一个明显优势就是可以自动过滤网络广播。

集线器与路由器的区别

首先说HUB,也就是集线器。它的作用可以简单的理解为将一些机器连接起来组成一个局域网。而交换机(又名交换式集线器)作用与集线器大体相同。但是两者在性能上有区别:集线器采用的式共享带宽的工作方式,而交换机是独享带宽。这样在机器很多或数据量很大时,两者将会有比较明显的。而路由器与以上两者有明显区别,它的作用在于连接不同的网段并且找到网络中数据传输最合适的路径。路由器是产生于交换机之后,就像交换机产生于集线器之后,所以路由器与交换机也有一定联系,不是完全独立的两种设备。路由器主要克服了交换机不能路由转发数据包的不足。

总的来说,路由器与交换机的主要区别体现在以下几个方面:

(1)工作层次不同 最初的的交换机是工作在数据链路层,而路由器一开始就设计工作在网络层。由于交换机工作在数据链路层,所以它的工作原理比较简单,而路由器工作在网络层,可以得到更多的协议信息,路由器可以做出更加智能的转发决策。

(2)数据转发所依据的对象不同 交换机是利用物理地址或者说MAC地址来确定转发数据的目的地址。而路由器则是利用IP地址来确定数据转发的地址。IP地址是在软件中实现的,描述的是设备所在的网络。MAC地址通常是硬件自带的,由网卡生产商来分配的,而且已经固化到了网卡中去,一般来说是不可更改的。而IP地址则通常由网络管理员或系统自动分配。

(3)传统的交换机只能分割冲突域,不能分割广播域;而路由器可以分割广播域 由交换机连接的网段仍属于同一个广播域,广播数据包会在交换机连接的所有网段上传播,在某些情况下会导致通信拥挤和安全漏洞。连接到路由器上的网段会被分配成不同的广播域,广播数据不会穿过路由器。虽然第三层以上交换机具有VLAN功能,也可以分割广播域,但是各子广播域之间是不能通信交流的,它们之间的交流仍然需要路由器。

(4)路由器提供了防火墙的服务 路由器仅仅转发特定地址的数据包,不传送不支持路由协议的数据包传送和未知目标网络数据包的传送,从而可以防止广播风暴。

二、TCP/IP参考模型

ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。而且TCP和IP两大协议在业界被广泛使用,所以由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。

1、TCP/IP参考模型的层次结构

TCP/IP参考模型分为四个层次:应用层、传输层、网络层、物理层

在TCP/IP参考模型中,去掉了OSI参考模型中的会话层和表示层(这两层的功能被合并到应用层实现)。同时将OSI参考模型中的数据链路层和物理层合并为网络接入层

物理层  

  实际上TCP/IP参考模型没有真正描述这一层的实现,只是要求能够提供给其上层-网络互连层一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其具体的实现方法将随着网络类型的不同而不同。  

网络层 

  网络层是整个TCP/IP协议栈的核心。它的功能是把分组发往目标网络或主机。同时,为了尽快地发送分组,可能需要沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。     网络层定义了分组格式和协议,即IP协议(Internet Protocol)。     网络层除了需要完成路由的功能外,也可以完成将不同类型的网络(异构网)互连的任务。除此之外,网络层还需要完成拥塞控制的功能。  

传输层  

  在TCP/IP模型中,传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议。即:传输控制协议TCP(transmissioncontrol protocol)和用户数据报协议UDP(user datagram protocol)。     TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。TCP协议还要处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方发送的大量数据。     UDP协议是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。  

应用层  

  TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。     应用层面向不同的网络应用引入了不同的应用层协议。其中,有基于TCP协议的,如文件传输协议(File Transfer Protocol,FTP)、虚拟终端协议(TELNET)、超文本链接协议(Hyper Text Transfer Protocol,HTTP),也有基于UDP协议的。

2、应用层详解

应用层为应用软件提供接口,使应用程序能够使用网络服务。应用层协议会指定使用相应的传输层协议,以及传输层所使用的端口等。

应用层的PDU被称为Data(数据)。

TCP/IP每一层都让数据得以通过网络进行传输,这些层之间使用PDU(Packet Data Unit, 协议数据单元)彼此交换信息,确保网络设备之间能够通信。

不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。

FTP

Telnet

HTTP

3、传输层详解

传输层协议接收来自应用层协议的数据,封装上相应的传输层头部,帮助其建立”端到端“的连接。

TCP和UDP报文格式

• TCP报文头部:

▫ Source Port:源端口,标识哪个应用程序发送。长度为16比特。

▫ Destination Port目:的端口,标识哪个应用程序接收。长度为16比特。

▫ Sequence Number:序号字段。TCP链接中传输的数据流每个字节都编上一个序号。

序号字段的值指的是本报文段所发送数据的第一个字节的序号。长度为32比特。

▫ Acknowledgment Number:确认序列号,是期望收到对方下一个报文段数据的第1

个字节的序号,即上次已成功接收到的数据段的最后一个字节数据的序号加1。只有

Ack标识为1,此字段有效。长度为32比特。

▫ Header Length:头部长度,指出TCP报文头部长度,以32比特(4字节)为计算单位。

若无选项内容,则该字段为5,即头部为20字节。

▫ Reserved:保留,必须填0。长度为6比特。

▫ Control bits:控制位,包含FIN、ACK、SYN等标志位,代表不同状态下的TCP数据

段。

▫ Window:窗口TCP的流量控制,这个值表明当前接收端可接受的最大的数据总数

(以字节为单位)。窗口最大为65535字节。长度为16比特。

▫ Checksum:校验字段,是一个强制性的字段,由发端计算和存储,并由收端进行验

证。在计算检验和时,要包括TCP头部和TCP数据,同时在TCP报文段的前面加上12

字节的伪头部。长度为16比特。

TCP的建立

三次握手

任何基于TCP的应用,在发送数据之前,都需要由TCP进行”三次握手“建立连接。

▫ 由TCP连接发起方(图中PC1),发送第一个SYN位置1的TCP报文。初始序列号a为一

个随机生成的数字,因为没收到过来自PC2的任何报文,所以确认序列号为0 ;

▫ 接收方(图中PC2)接收到合法的SYN报文之后,回复一个SYN和ACK置1的TCP报文。

初始序列号b为一个随机生成的数字,同时因为此报文是回复给PC1的报文,所以确

认序列号为a+1;

▫ PC1接收到PC2发送的SYN和ACK置位的TCP报文后,回复一个ACK置位的报文,此时

序列号为a+1,确认序列号为b+1。PC2收到之后,TCP双向连接建立。

传输过程

TCP使用序列号和确认序列号字段实现数据的可靠和有序传输

▫ 1. PC1将全部待TCP发送的数据按照字节为单位编上号。假设第一个字节的编号为

“a+1”,第二个字节的序号为“a+2”,依次类推。

▫ 2. PC1会把每一段数据的第一个字节的编号作为序列号(Sequence number),然后

将TCP报文发送出去。

▫ 3. PC2在收到PC1发送来的TCP报文后,需要给予确认同时请求下一段数据,如何确

定下一段数据呢?序列号( a+1 )+载荷长度=下一段数据的第一个字节的序号

(a+1+12)

▫ 4. PC1在收到PC2发送的TCP报文之后,发现确认序列号为“a+1+12” ,说明“a+1”

到“a+12”这一段的数据已经被接受,需要从“a+1+12”开始发送。

滑动窗口机制

TCP通过滑动窗口机制来控制数据的传输速率

• 1. 在TCP三次握手建立连接时,双方都会通过Window字段告诉对方本端最大能够接受的字

节数(也就是缓冲区大小)。

• 2. 连接建立成功之后,发送方会根据接受方宣告的Window大小发送相应字节数的数据。

• 3. 接受方接受到数据之后会放在缓冲区内,等待上层应用来取走缓冲的数据。若数据被上

层取走,则相应的缓冲空间将被释放。

• 4. 接收方根据自身的缓存空间大小通告当前的可以接受的数据大小( Window )。

• 5. 发送方根据接收方当前的Window大小发送相应数量的数据。

四次挥手

当数据传输完成,TCP需要通过”四次挥手“机制断开TCP连接,释放系统资源

▫ 1. 由PC1发出一个FIN字段置”1 ”的不带数据的TCP段;

▫ 2. PC2收到PC1发来的FIN置位的TCP报文后,会回复一个ACK置位的TCP报文。

▫ 3. 若PC2也没有需要发送的数据,则直接发送FIN置位的TCP报文。假设此时PC2还有

数据要发送,那么当PC2发送完这些数据之后会发送一个FIN置位的TCP报文去关闭连

接。

▫ 4. PC1收到FIN置位的TCP报文,回复ACK报文,TCP双向连接断开。

4、网络层详解

网络层提供了无连接数据传输服务,即网络在发送数据报文时不需要先建立连接,每一个IP数据报文独立发送。网络层解决的问题是在复杂的网络环境中确定一个合适的路径

IP报文头部

• IP Packet(IP数据包),其包头主要内容如下:

▫ Version:4 bit,4:表示为IPv4;6:表示为IPv6。

▫ Header Length:4 bit,首部长度,如果不带Option字段,则为20,最长为60。

▫ Type of Service:8 bit,服务类型。只有在有QoS差分服务要求时,这个字段才起作

用。

▫ Total Length:16 bit,总长度,整个IP数据包的长度。

IP报文分片:传输一个大于MTU(最大传输单元,一般是1500)的数据包时,需要把一个报文分成多个报文

▫ Identification:16 bit,标识,分片重组时会用到该字段。唯一的标识一个数据包

▫ Flags:3 bit,标志位。(标识或者标记,代表某种功能):不分片位和更多分片位

▫ Fragment Offset:12 bit,片偏移,分片重组时会用到该字段。

->华为VRP中的s代表的是发送的数据大小,而不是整个IP包的大小;思科中的size是整个IP 包的大小

▫ Time to Live:8 bit,生存时间。

▫ Protocol:8 bit,协议:下一层协议。指出此数据包携带的数据使用何种协议,以便

目的主机的IP层将数据部分上交给哪个进程处理。

▪ 常见值:

− 1: ICMP, Internet Control Message;

− 2: IGMP, Internet Group Management;

− 6: TCP , Transmission Control Protocol;

− 17: UDP, User Datagram Protocol。

▫ Header Checksum:16 bit,首部检验和。

▫ Source IP Address:32 bit,源IP地址。

▫ Destination IP Address:32 bit,目的IP地址。

▫ Options:可变,选项字段。

▫ Padding:可变,填充字段,全填0。

数据包分片

网络中转发的IP报文的长度可以不同,但如果报文长度超过了数据链路所支持的最大长度,则报文就需要分割成若干个较小的片段才能够在链路上传输。

• Identification:16 bit,发送主机赋予的标识,分片重组时会用到该字段。

• Flags:3 bit,标志位。

▫ 保留段位:0,保留。

▫ 不分段位:1,表示“不能分片”;0,表示“能分片”。

▫ 更多段位:1,表示“后面还有分片”;0,表示“最后一个数据片”。

• Fragment Offset:12 bit,片偏移,分片重组时会用到该字段。指出较长的分组在分片后,

该片在原分组中的相对位置,与更多段位组合,帮助接收方组合分段的报文。

IP地址

• 在IP网络上,如果用户要将一台计算机连接到Internet上,就需要申请一个IP地址。IP地址

就像现实中的地址,可以标识网络中的一个节点,数据就是通过它来找到目的地的。即我

们通过IP地址实现全球范围内的网络通信。

• IP地址是网络设备接口的属性,不是网络设备本身的属性。当我们说给某台设备分配一个IP

地址时,实质上是指给这台设备的某个接口分配一个IP地址。如果设备有多个接口,通常每

个接口都至少需要一个IP地址。

IP地址构成

• IPv4地址由如下两部分组成:

▫ 网络部分 (网络号):用来标识一个网络。

▪ IP地址不能反映任何有关主机位置的地理信息,只能通过网络号码字段判断出

主机属于哪个网络。

▪ 对于网络号相同的设备,无论实际所处的物理位置如何,它们都是处在同一个

网络中。

▫ 主机部分 (主机号):用来区分一个网络内的不同主机。

• 网络掩码 (Netmask),又称子网掩码 (Subnet Mask):

▫ 网络掩码为32 bit,与IP地址的位数一样,通常也以点分十进制数来表示。

▫ 网络掩码不是一个IP地址,在二进制的表示上是一堆连续的1、后面接一堆连续的0。

▫ 通常将网络掩码中1的个数称为这个网络掩码的长度。如:掩码0.0.0.0的长度是0,掩

码252.0.0.0的长度是6。

▫ 网络掩码一般与IP地址结合使用,其中值为1的比特对应IP地址中的网络位;值为0的

比特对应IP地址中的主机位,以此来辅助我们识别一个IP地址中的网络位与主机位。

即网络掩码中1的个数就是IP地址的网络号的位数,0的个数就是IP地址的主机号的位

数。

IP地址分类(有类编址)

私网IP地址

5、数据链路层详解

主要功能:用于两个设备(同一种数据链路节点)之间进行信息传递。

网络层和数据链路层对比: 网络层是进行地址管理和路由选择的,它是为数据报的转发找出一条路来,而数据链路层解决的是两个结点直接的数据交换,数接近于物理层的概念。

了解以太网:

“以太网” 不是一种具体的网络, 而是一种技术标准; 它既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等 以太网中的网线必须使用双绞线,传输速率有10M, 100M, 1000M等 以太网是当前应用广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等

以太网MAC帧格式

在以太网中,数据通信得基本单位是以太网帧(Frame)。以太帧的格式有两个标准:Ethernet_II格式和IEEE 802.3格式,因此协议规定以太网帧的数据格式如图所示。

• Ethernet Ⅱ以太帧:

▫ DMAC:6字节,目的MAC地址,IPV4为6字节,该字段标识帧的接收者。

▫ SMAC:6字节,源MAC地址,IPV4为6字节,该字段标识帧的发送者。

▫ Type:2字节,协议类型。常见值:

▪ 0x0800:Internet Protocol Version 4 (IPv4) ;

▪ 0x0806:Address Resolution Protocol (ARP) 。

• IEEE 802.3 LLC以太帧:

▫ 逻辑链路控制LLC(Logical Link Control)由目的服务访问点DSAP(Destination

Service Access Point)、源服务访问点SSAP(Source Service Access Point)和

Control字段组成。

▪ DSAP:1字节,目的服务访问点,若后面类型为IP值设为0x06。服务访问点的

功能类似于Ethernet II帧中的Type字段或TCP/UDP传输协议中的端口号。

▪ SSAP:1字节,源服务访问点,若后面类型为IP值设为0x06。

▪ Ctrl:1字节,该字段值通常设为0x03,表示无连接服务的IEEE 802.2无编号数

据格式。

MAC地址构成及分类

• 一个制造商在生产制造网卡之前,必须先向IEEE注册,以获取一个长度为24bit (3字节)的

厂商代码,也称为OUI。

• 后24bit由厂商自行分派,是各个厂商制造的所有网卡的唯一编号。

MAC地址可以分为3种类型:

▫ 单播MAC地址:也称物理MAC地址,这种类型的MAC地址唯一的标识了以太网上的

一个终端,该地址为全球唯一的硬件地址。

▪ 单播MAC地址用于标识链路上的一个单一节点。

▪ 目的MAC地址为单播MAC地址的帧发往一个单一的节点。

▪ 单播MAC地址可以作为源或目的地址。

▪ 注意:单播MAC地址具有全球唯一性,当一个二层网络中接入了两台具有相同

MAC地址的终端时(例如误操作等),将会引发通信故障(例如这两台终端无

法相互通信),且其他设备与它们之间的通信也会存在问题。

▫ 广播MAC地址:全1的MAC地址(FF-FF-FF-FF-FF-FF),用来表示局域网上的所有终

端设备。

▪ 广播MAC地址可以理解为一种特殊的组播MAC地址。

▪ 其具体格式为:FFFF-FFFF-FFFF。

▪ 目的MAC地址为广播MAC地址的帧发往链路上的所有节点。

▫ 组播MAC地址:除广播地址外,第7bit为1的MAC地址为组播MAC地址(例如01-00-

00-00-00-00),用来代表局域网上的一组终端。

▪ 组播MAC地址用于标识链路上的一组节点。

▪ 目的MAC地址为组播MAC地址的帧发往一组节点。

▪ 组播MAC地址不能作为源地址,只能作为目的地址。

单播以太帧

• 局域网上的帧可以通过三种方式发送。

• 第一种是单播,指从单一的源端发送到单一的目的端。

▫ 每个主机接口由一个MAC地址唯一标识,MAC地址的OUI中,第一字节第8个比特表

示地址类型。对于主机MAC地址,这个比特固定为0,表示目的MAC地址为此MAC地

址的帧都是发送到某个唯一的目的端。

▫ 在同一广播域中,所有主机都能收到源主机发送的单播帧,但是其他主机发现目的地

址与本地MAC地址不一致后会丢弃收到的帧,只有真正的目的主机才会接收并处理收

到的帧。

广播以太帧

• 第二种发送方式是广播,表示帧从单一的源发送到共享以太网上的所有主机。

▫ 广播帧的目的MAC地址为十六进制的FF-FF-FF-FF-FF-FF,所有收到该广播帧的主机

都要接收并处理这个帧。

▫ 广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能。

▫ 当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广

播方式。

组播以太帧

• 第三种发送方式为组播,组播比广播更加高效。

▫ 组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的MAC地

址为该组播MAC地址的帧。

▫ 组播MAC地址和单播MAC地址是通过第一字节中的第8个比特区分的。组播MAC地址

的第8个比特为1。

▫ 当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响

的情况下通常会使用组播方式。

喜欢 (0)
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论