网络通信模式
作用:指导网络设备的通信;
OSI七层模型:
7.应用层:由应用层协议(http、FTP、Telnet.)为应用程序产生对应的数据;
6.表示层:将应用层产生的数据转换成网络设备看得懂的语言
5.会话层:为应用数据产生一个独立的会话,放置不同数据之间的相互干扰
4.传输层:为应用数据封装一层传输层头部,用于为数据提高传输服务;
TCP--可靠、传输效率慢;
UCP--不可靠、传输效率高;
文字、文件--采用TCP封装
语音、视频--采用UDP封装
3.网络层:为数据封装网络层头部:
封装sip以及dip;
sip:发送端的ip地址;
dip:目的端的ip地址;
2.数据链路层:为数据封装数据链路层头部
一般会封装smac、dmac;
smac:发送端的mac地址;
dmac接收端的mac地址;
1.物理层:将已经打包好的数据转换成适合在物理链路上进行传递的信号进行发送;
TCP/IP常见协议
应用层
HTTP(Hypertext Transfer Protocol,超文本传输协议):用来访问在网页服务器上的各种页面。
FTP(File Transfer Protocol,文件传输协议):为文件传输提供了途径,它允许数据从一台主机传送到另一台主机上。
DNS(Domain Name Service,域名称解析服务):用于实现从主机域名到IP地址之间的转换。
传输层
TCP (Transmission Control Protocol,传输控制协议) :为应用程序提供可靠的面向连接的通信服务。目前,许多流行的应用程序都使用TCP。
UDP(User Datagram Protocol,用户数据报协议):提供了无连接通信,且不对传送数据包进行可靠性的保证。
网络层
IP(Internet Protocol,互联网协议):将传输层的数据封装成数据包并完成源站点到目的站点的转发,提供无连接的、不可靠的服务。
IGMP(Internet Group Management Protocol,因特网组管理协议):负责IP组播成员管理的协议。它用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
ICMP(Internet Control Message Protocol,网际报文控制协议):基于IP协议在网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。
数据链路层
PPP(Point-to-Point Protocol,点对点协议):一种点对点模式的数据链路层协议,多用于广域网。
Ethernet( 以太网协议 ):一种多路访问广播型数据链路层协议,是当前应用最为广泛的局域网技术。
PPPoE(Point-to-Point Protocol over Ethernet,以太网承载PPP协议):PPPoE提供通过简单桥接访问设备(接入设备)把一个网络的多个主机连接到远程访问集中器的功能。常见的应用有家庭宽带拨号上网。
应用层
应用层为应用软件提供接口,使应用程序能够使用网络服务。应用层协议会指定使用相应的传输层协议,以及传输层所使用的端口等。
应用层的PDU被称为Data(数据)。
TCP/IP每一层都让数据得以通过网络进行传输,这些层之间使用PDU(Packet Data Unit,协议数据单元)彼此交换信息,确保网络设备之间能够通信。
不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。
常见应用层协议 - FTP
FTP(File Transfer Protocol)是一个用于从一台主机传送文件到另一台主机的协议,用于文件的“下载”和“上传”,它采用C/S(Client/Server)结构。
常见应用层协议 - Telnet
Telnet是数据网络中提供远程登录服务的标准协议。 Telnet为用户提供了在本地计算机上完成远程设备工作的能力。
用户通过Telnet客户端程序连接到Telnet服务器。用户在Telnet客户端中输入命令,这些命令会在服务器端运行,就像直接在服务端的控制台上输入一样。
常见应用层协议 - HTTP
HTTP(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
传输层
传输层协议接收来自应用层协议的数据,封装上相应的传输层头部,帮助其建立“端到端”(Port to Port)的连接。
传输层的PDU被称为Segment(段)。
网络层头部(ip头)
封装协议:ip协议
关键内容:
版本:v4、v6、默认为v4
TOS:服务类别,用于对流量进行分类,实现QOS;
分片字段:分片id、flags、偏移量;
分片:当网络设备需要发送的数据大小,超出了接口MTU(最大发送单元,默认为1500B)时,需要将数据分成若干个小的数据发送出去,接收端收到后进行重组;
分片id:用于标记一个数据是否为分片数据,如果是的话,分片id不为0;
flags:其中更多段位用于标识分片是否为最后一个分片,如果不是则为1,如果是则为0,当接收端收到flags位为0的分片时,即可开始进行重组;
偏移量:用于标识分片的重组顺序,以防分片在传输过程中,出现顺序互换,导致数据包错乱的情况,
eg:
4500B数据,分片1 1500B
2 1500B
3 1500B
偏移量: 0 1499 分片1
1500 2999 分片2
3000 4499 分片2
TTL (生存时间)
范围: 0~255,初始值为255;
作用: 1、标识数据包经过了多少台三层设备(路由器、三层交换机、防火墙);
2、防止数据包无限转发,
原理: 当一个数据包被发出时,TTL为255,每经过一台三层设备转发,就会减1
当数据包中的TTL被减为0时,失去被发送的资格;
协议号
作用: 用于标识上层协议类型,
可以实现设备在处理网络层头部时,得知上层协议类型,提前调用对应的协议出来处理数据:
TCP--6
UDP--17
sip:发送端的ip地址
dip:接受端的IP地址
TCP/IP
传输层协议
TCP(传输控制协议)
作用:为数据封装TCP头部,提供可靠的传输服务;
封装内容:
端口号;
定义:大小16bit,范围为0~65535,其中0~1023属于知名端口号,1024~65535属于自定义端口号;
作用:源端口号随机从自定义端口号中生成,没有特殊含义;
目的端口号用于标识上层协议;(http-80、FTP-20、21、telnet-23)
序列号、确认号;
控制位:常见SYN、ACK、FIN位,代表TCP的报文类型,比如SYN报文的SYN位=1;
window(窗口值):代表同一时间内,最多可以发送以及接收多大的数据,最多16bit;
可靠性机制
1、面向连接
当需要传输基于TCP的流量时,需要先建立TCP连接通道,通过三次握手的方式建立;
(1)主动端发送SYN报文给被动端,其中会携带随机生成的序列号(a),用于请求建立TCP连接
(2)被动端收到后,会产生一份SYN以及ACK同时置位的TCP报文,其中ack号为a+1,用于确认跟主动端建立连接,另外还会产生一个随机的序列号(b),用于请求被动端到主动端的TCP连接;
(3)主动端收到被动端的报文后,产生一份ACK报文,其中ack=b+1,用于对被动端向主动端的连接请求进行确认;
(4)被动端收到后,双向连接建立完成;
2、确认机制/重传机制
所有基于TCP的流量都会携带一个序列号,当设备发出一份基于TCP的流量后,必须收到对端的ACK报文进行确认,才会继续发送下一份,否则会进行重传;
3、流控机制/窗口滑动机制
作用:确保被发送出去的基于TCP的流量,不会因为双方的窗口值有差异,而出现丢包现象;
原理:被发送的TCP流量,会携带发送端的窗口值,如果接收端的窗口值,小于发送端的窗口值,则会在进行确认时,通过ack号以及window值告知发送端,发送端会根据接收端的窗口值,调整自己的发送窗口;
4、关闭连接
当需要停止传输TCP流量时,需要把第一步建立的TCP连接进行关闭,通过四次挥手的方式进行关闭;
(1)主动端发送FIN以及ACK位同时置位的TCP报文,其中序列号以及ack号均为随机产生的,假设序列号为a,ack号为b
(2)被动端收到后,先产生一份ACK报文,其中ack号为a+1,发送出去,用于确认关闭主动端到被动端的连接;
(3)被动端再产生一份FIN报文,其中序列号为b,发送出去,用于请求关闭被动端到主动端的连接;
(4)主动端收到后,产生ACK报文,其中ack号为b+1,发送出去,用于确认关闭被动端到主动端的连接;
至此,双向连接关闭成功;
特点:可靠性高、效率低下;
应用:适用于对丢包率要求较高的流量,如文本类流量;
UDP(用户数据包协议)
作用:为数据封装UDP头部,提供效率高的传输服务;
封装内容:主要就是端口号;
可靠性机制:无
特点:效率高、可靠性差;
应用:适用于语音、视频等一些对时延比较敏感、连续要求较高的流量;
TCP和UDP – 端口号
客户端使用的源端口一般随机分配,目标端口则由服务器的应用指定;
源端口号一般为系统中未使用的,且大于1023;
目的端口号为服务端开启的应用(服务)所侦听的端口,如HTTP缺省使用80。
TCP的建立 - 三次握手
任何基于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的序列号与确认序列号
假设PC1要给PC2发送一段数据,传输过程如下:
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的窗口滑动机制
TCP通过滑动窗口机制来控制数据的传输速率
1. 在TCP三次握手建立连接时,双方都会通过Window字段告诉对方本端最大能够接受的字节数(也就是缓冲区大小)。
2. 连接建立成功之后,发送方会根据接受方宣告的Window大小发送相应字节数的数据。
3. 接受方接受到数据之后会放在缓冲区内,等待上层应用来取走缓冲的数据。若数据被上层取走,则相应的缓冲空间将被释放。
4. 接收方根据自身的缓存空间大小通告当前的可以接受的数据大小( Window )。
5. 发送方根据接收方当前的Window大小发送相应数量的数据。
TCP的关闭 - 四次挥手
当数据传输完成,TCP需要通过“四次挥手”机制断开TCP连接,释放系统资源。
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双向连接断开。
网络层
传输层负责建立主机之间进程与进程之间的连接,而网络层则负责数据从一台主机到另外一台主机之间的传递。
网络层的PDU被称为Packet(包)。
IPv4( Internet Protocol Version 4),简称IP,是目前应用最广泛的网络层协议。
网络层协议工作过程
当采用IP作为网络层协议时,通信的双方都会被分配到一个“独一无二”的IP地址来标识自己。IP地址可被写成32位的二进制整数值形式,但为了方便人们阅读和分析,它通常被写成点分十进制的形式,即四个字节被分开用十进制表示,中间用点分隔,比如192.168.1.1。
IP数据包的封装与转发:
网络层收到上层(如传输层)协议传来的数据时候,会封装一个IP报文头部,并且把源和目的IP地址都添加到该头部中。
中间经过的网络设备(如路由器),会维护一张指导IP报文转发的“地图”——路由表,通过读取IP数据包的目的地址,查找本地路由表后转发IP数据包。
IP数据包最终到达目的主机,目的主机通过读取目的IP地址确定是否接受并做下一步处理。
IP协议工作时,需要如OSPF、IS-IS、BGP等各种路由协议帮助路由器建立路由表,ICMP帮忙进行网络的控制和状态诊断。
数据链路层
数据链路层位于网络层和物理层之间,可以向网络层的IP、IPv6等协议提供服务。数据链路层的PDU被称为Frame(帧)。
以太网(Ethernet)是最常见的数据链路层协议。
以太网与MAC地址
MAC地址(物理地址)
MAC地址由48比特(6个字节)长,12位的16进制数字组成。例如:48-A4-72-1C-8F-4F
作用:唯一标识一张网卡(全球唯一)
特点:设备天生就有,并且无法后期更改;
格式:十六进制;
大小:48bit
分类:根据通信类型进行分类:
单播mac:用于唯一标识一张网卡,实现1对1通信,二进制角度的第8bit固定为0;
组播mac:用来标识一组设备,实现一对多通信,二进制角度的第8bit固定为1;
广播mac:用于实现1对所有通信,mac地址为F(十六进制角度),在二进制角度全为1
地址解析协议 (ARP)
ARP (Address Resolution Protocol)地址解析协议:
根据已知的IP地址解析获得其对应的MAC地址。
作用:
ARP是根据IP地址获取数据链路层地址的一个TCP/IP协议,从而完成数据封装。
ARP是IPv4中必不可少的一种协议,它的主要功能是:
将IP地址解析为MAC地址;
维护IP地址与MAC地址的映射关系的缓存,即ARP表项;
实现网段内重复IP地址的检测。
报文:
ARP层——数据链路层
ARP层:源ip、目标ip(target ip)、源mac、目标mac;
ARP缓存表
用于记录ip地址与mac地址的对应关系;
查看 终端——>arp -a
路由器、交换机——>display arp
arp工作过程
1、广播请求阶段;
当一台设备需要封装dmac时,先查看自身的arp缓存表中是否存在对应的mac地址,如果存在则直接完成封装,如果没有则发送ARP请求报文进行请求;
ARP请求
ARP层
sip:自己
tip:请求的对象的ip地址
smac:自己
tmac:空
数据链路层
smac:自己
dmac:全F(广播发送)
2、单播回应阶段:
当一台设备收到ARP请求后,拆除数据链路层头部,看到ARP层,判断目标ip是否为自己,如果不是,则直接丢弃,如果是,则执行以下操作:
(1)将ARP层中sip以及smac的对应关系学习进自身的ARP缓存表,供日后使用;
(2)将对端请求的mac地址填进ARP请求的目标mac中,然后产生ARP回应报文单播发送出去;
其中ARP层的sip、tip、smac、tmac为ARP请求的源目互换,数据链路层的smac以及dmac直接复制ARP层的,进行单播发送;
3、请求端收到ARP回应后,将ARP层的sip以及smac的对应关系学习进ARP缓存表中,完成数据封装;
免费ARP(特殊的ARP请求)
特点:ARP层的sip以及tip一致,均为自身的ip地址;
作用:检测ip地址的冲突性;
发送时机:当一台网络设备刚获取到一个新的ip地址时就会发送;
原理:当发出一个免费ARP后,如果收到回应,则说明ip地址存在冲突,则不能使用该ip;
物理层
数据到达物理层之后,物理层会根据物理介质的不同,将数字信号转换成光信号、电信号或者是电磁波信号。
物理层的PDU被称为比特流(Bitstream)。
常见传输介质
双绞线:当今以太网最常见的传输介质,按照抗电磁干扰能力还可以分为:
STP-屏蔽双绞线
UTP-非屏蔽双绞线
光纤传输,按照功能部件可分为:
光纤:光传输介质,简单的说,就是一根玻璃纤维,用于约束光传输的通道。
光模块:将电信号与光信号互转的器件,产生光信号。
串口电缆在WAN(Wide Area Network,广域网)中大规模使用,根据WAN线路类型不同,串口电缆在设备上连接的接口类型也不同:异/同步串口、ATM接口、POS接口、CE1/PRI接口等。
无线信号的传输可以通过电磁波进行,例如:无线路由器将数据通过调制以电磁波发送出去,移动终端的无线网卡将电磁波解调,得到数据,完成从无线路由器到移动终端的数据传输。
中间网络数据传输
封装好的完整数据,将会在网络中被传递。
一般情况下:
网络中的二层设备(如以太网交换机)只会解封装数据的二层头部,根据二层头部的信息进行相应的“交换”操作。
网络中的三层设备(如路由器)只会解封装到三层头部,并且根据三层头部的信息进行相应的“路由”操作。
注:“交换”和“路由”的详细细节和原则,将会在后面的课程中详细介绍。
接收方数据解封装
5 应用层:相当于OSI模型中的5~7层的功能; data
4 传输层 段
3 网络层 包
2 数据链路层 帧
1 物理层 bit流
数据发送:将应用层产生的数据,基于TCP/IP五层模型,由上往下进行逐层的封装,然后发送出去的过程
数据接收:网络设备收到数据后,进行基于TCP/IP五层模型,由下往上逐层解除封装,直至看到应用层数据为止的过程
数据转发:数据从发送端发出,到接收端之间,经过的网络设备负责将数据进行转发
其中路由器工作在网络层,根据网络层头部进行转发;
交换机工作在数据链路层,根据数据链路层头部进行转发;