1.数据通信网络基础
网络通信基本概念
**通信:**是指人与人、人与物、物与物之间通过某种媒介和行为进行的信息传递与交流。
网络通信,是指终端设备之间通过计算机网络进行的通信。
•网络通信的例子:
▫A. 两台计算机通过一根网线相连,就组成了一个最简单的网络。
▫B. 由一台路由器(或交换机)和多台计算机设备组成的小型网络。在这样的网络中,通过路由器的中转,每两台计算机之间都可以自由地传递文件。
▫C. 当计算机想从某个网址获取文件时,必须先接入Internet,然后才能下载。
•Internet (译名:英特网、互联网、网际网等),是目前世界上规模最大的计算机网络,其前身诞生于1969年的ARPAnet (Advanced Research Projects Agency Network)。Internet的广泛普及和应用是当今信息时代的标志性内容之一。
信息传递过程
虚拟的信息传递与真实的物品传递过程有许多相似之处
常见术语
数据载荷:可以理解为最终想要传递的信息,但实际上,在具有层次化结构的通信过程中,上一层协议传递给下一层协议的数据单元(报文)都可以称之为下一层协议的数据载荷。
报文:网络中交换与传输的数据单元,具有一定的内在格式,通常都具有头部+数据载荷+尾部的基本结构。传输过程中,报文的格式和内容可能发生改变。
头部:为了更好的传递信息,在组装报文时,在数据载荷的前面添加的信息段统称为报文的头部。
尾部:为了更好的传递信息,在组装报文时,在数据载荷的后面添加的信息段统称为报文的尾部。注意,很多报文是没有尾部的。
封装:分层协议所采用的一种技术,底层协议收到来自上层协议的消息时,将该消息附加到底层帧的数据部分。
解封装:是封装的逆过程,也就是去掉报文的头部和尾部,获取数据载荷的过程。
网关:是在采用不同体系结构或协议的网络之间进行互通时,用于提供协议转换、路由选择、数据交换等功能的网络设备。网关是一种根据其部署位置和功能而命名的术语,而不是一种特定的设备类型。
•路由器:为报文选择传递路径的网络设备。
**•终端设备:**数据通信系统的端设备,作为数据的发送者或接收者,提供用户接入协议操作所需必要功能,可以是计算机、服务器、VoIP、手机等。
数据通信网络:
由路由器、交换机、防火墙、无线控制器、无线接入点,以及个人电脑、网络打印机、服务器等设备构成的通信网络。
功能:
数据通信网络最基本的功能是实现数据互通。
局域网、城域网、广域网
按照地理覆盖范围来划分,网络可以分为局域网(Local Area Network)、城域网(Metropolitan Area Network)和广域网(Wide Area Network)。
局域网(LAN):
在某一地理区域内由计算机、服务器以及各种网络设备组成的网络。局域网的覆盖范围一般是方圆几千米以内。
典型的局域网有:一家公司的办公网络,一个网吧的网络,一个家庭网络等。
城域网(MAN):
在一个城市范围内所建立的计算机通信网络。
典型的城域网有:宽带城域网、教育城域网、市级或省级电子政务专网等。
广域网(WAN):
通常覆盖很大的地理范围,从几十公里到几千公里。它能连接多个城市甚至国家,并能提供远距离通信,形成国际性的大型网络。
典型的广域网有:Internet (因特网)。
按照网络的拓扑形态来划分,网络可分为星型网络、总线型网络、环形网络、树形网络、全网状网络和部分网状网络。
网络设备
交换机
▫在园区网络中,交换机一般来说是距离终端用户最近的设备,接入层的交换机一般为二层交换机,又称为以太网交换机,二层是指TCP/IP参考模型的数据链路层;
▫以太网交换机可以实现:数据帧的交换、终端用户设备的接入、基本的接入安全功能、二层链路的冗余等;
▫广播域:一个节点发送一个广播报文其余节点都能够收到的节点的集合。
路由器
▫路由器工作在TCP/IP参考模型的网络层;
▫路由器可以实现:维护路由表和路由信息、路由发现及路径选择、数据转发、隔离广播域、广域网接入和网络地址转换及特定的安全功能。
路由器:网络层设备,可以在因特网中进行数据报文转发。路由器根据所收到的报文的目的地址选择一条合适的路径,将报文传送到下一个路由器或目的地,路径中最后的路由器负责将报文送交目的主机。
实现同类型网络或异种网络之间的通信
隔离广播域
维护路由表(Routing Table)、运行路由协议
路径(路由信息)选择、IP报文转发
广域网接入、网络地址转换
连接通过交换机组建的二层网络
防火墙
网络安全设备,用于控制两个网络之间的安全通信。它通过监测、限制、更改跨越防火墙的数据流,尽可能地对外部屏蔽网络内部的信息、结构和运行状况,以此来实现对网络的安全保护。
隔离不同安全级别的网络
实现不同安全级别的网络之间的访问控制(安全策略)
用户身份认证
实现远程接入功能
实现数据加密及虚拟专用网业务
执行网络地址转换
其他安全功能
无线设备
无线局域网WLAN广义上是指以无线电波、激光、红外线等无线信号来代替有线局域网中的部分或全部传输介质所构成的网络。而常见的Wi-Fi是指IEEE 802.11标准上的无线局域网技术。
在WLAN中,常见的设备有胖AP、瘦AP和无线控制器AC。
▫无线接入点 (AP, Access Point)
一般支持FAT AP、FIT AP和云管理工作模式,根据网络规划的需求,可以灵活地在各种模式下切换。
FAT AP:适用于家庭,独立工作,需单独配置,功能较为单一,成本低。
▪FIT AP:适用于大中型企业,需要配合AC使用,由AC统一管理和配置,功能丰富。
云管理:适用于中小型企业,需要配合云管理平台使用,由云管理平台统一管理和配置,功能丰富,即插即用。
无线接入控制器 (AC, Access Controller)
一般位于整个网络的汇聚层,提供高速、安全、可靠的WLAN业务。
提供大容量、高性能、高可靠性、易安装、易维护的无线数据控制业务,具有组网灵活、绿色节能等优势。
网络拓扑
网络拓扑(Network Topology)是指用传输介质(例如双绞线、光纤等)互连各种设备(例如计算机终端、路由器、交换机等)所呈现的结构化布局。
网络拓扑图是在网络工程领域用于描述网络的物理或逻辑结构,是一种非常重要的网络内容
网络拓扑形态
按照网络的拓扑形态来划分,网络可分为星型网络、总线型网络、环形网络、树形网络、全网状网络和部分网状网络
星型网络
▫所有节点通过一个中心节点连接在一起。
▫优点:容易在网络中增加新的节点。通信数据必须经过中心节点中转,易于实现网络监控。
▫缺点:中心节点的故障会影响到整个网络的通信。
总线型网络
▫所有节点通过一条总线(如同轴电缆)连接在一起。
▫优点:安装简便,节省线缆。某一节点的故障一般不会影响到整个网络的通信。
▫缺点:总线故障会影响到整个网络的通信。某一节点发出的信息可以被所有其他节点收到,安全性低。
环型网络
▫所有节点连成一个封闭的环形。
▫优点:节省线缆。
▫缺点:增加新的节点比较麻烦,必须先中断原来的环,才能插入新节点以形成新环。
树型网络
▫树型结构实际上是一种层次化的星型结构。
▫优点:能够快速将多个星型网络连接在一起,易于扩充网络规模。
▫缺点:层级越高的节点故障导致的网络问题越严重。
2.华为VRP系统
通用路由平台VRP(Versatile Routing Platform)是华为公司数据通信产品的通用操作系统平台。它以IP业务为核心,采用组件化的体系结构,在实现丰富功能特性的同时,还提供了基于应用的可裁剪和可扩展的功能,使得路由器和交换机的运行效率大大增加。熟悉VRP操作系统并且熟练掌握VRP配置是高效管理华为网络设备的必备基础。
配置文件
•配置文件是命令行的集合。用户将当前配置保存到配置文件中,以便设备重启后,这些配置能够继续生效。另外,通过配置文件,用户可以非常方便地查阅配置信息,也可以将配置文件上传到别的设备,来实现设备的批量配置。
•补丁是一种与设备系统软件兼容的软件,用于解决设备系统软件少量且急需解决的问题。在设备的运行过程中,有时需要对设备系统软件进行一些适应性和排错性的修改,如改正系统中存在的缺陷、优化某功能以适应业务需求等。
•文件的管理方式包括:
▫通过Console或者telnet等直接登陆系统管理
▫通过FTP、TFTP或SFTP登录设备进行管理
文件系统
文件系统是指对存储器中文件、目录的管理,功能包括查看、创建、重命名和删除目录,拷贝、移动、重命名和删除文件等。 ⋅⋅掌握文件系统的基本操作,对于网络工程师高效管理设备的配置文件和VRP系统文件至关重要。
系统软件是设备启动、运行的必备软件,为整个设备提供支撑、管理、业务等功能。常见文件后缀名为:(.cc)
补丁是一种与设备系统软件兼容的软件,用于解决设备系统软件少量且急需解决的问题。常见文件后缀名为:(.pat)
配置文件是用户将配置命令保存的文件,作用是允许设备以指定的配置启动生效。常见文件后缀名为:(.cfg,.zip,.dat)
PAF文件是根据用户对产品需要提供了一个简单有效的方式来裁剪产品的资源占用和功能特性。常见文件后缀名为:(.bin)
存储设备
包括:SDRAM、Flash、NVRAM、SD Card、USB。
Flash 属于非易失存储器,断电后,不会丢失数据。主要存放系统软件,配置文件等;补丁文件和PAF文件由维护人员上传,一般存储于flash或SD Card中。
SDRAM 同步动态随机存储器是系统运行内存,相当于电脑的内存。
NVRAM 非易失随机读写存储器,用于存储日志缓存文件,定时器超时或缓存满后再写入Flash。
SD Card 断电后,不会丢失数据。存储容量较大,一般出现在主控板上,可以存放系统文件,配置文件,日志等。
USB USB是接口,用于外接大容量存储设备,主要用于设备升级,传输数据。
设备初始化过程
设备上电后,首先运行BootROM软件,初始化硬件并显示设备的硬件参数,然后运行系统软件,最后从默认存储路径中读取配置文件进行设备的初始化操作。
•BootROM(Boot Read-Only Memory)是一组固化到设备内主板上ROM芯片中的程序,它保存着设备最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。
•开机界面提供了系统启动的运行程序和正在运行的VRP版本及其加载路径等信息。
设备管理
用户对设备的常见管理方式主要有命令行方式和Web网管方式两种。
用户需要通过相应的方式登录到设备后才能对设备进行管理。
•Web网管方式通过图形化的操作界面,实现对设备直观方便地管理与维护,但是此方式仅可实现对设备部分功能的管理与维护。
•Web网管方式可以通过HTTP和HTTPS方式登录设备。
•命令行方式需要用户使用设备提供的命令行对设备进行管理与维护,此方式可实现对设备的精细化管理,但是要求用户熟悉命令行。
•命令行方式可以通过Console口、Telnet或SSH方式登录设备。
VRP用户级别
VRP提供基本的权限控制,可以实现不同级别的用户能够执行不同级别的命令,用以限制不同用户对设备的操作。
| 用户等级 | 命令等级 | 名称 | 说明 |
|---|---|---|---|
| 0 | 0 | 参观级别 | 可使用网络诊断工具命令(ping、tracert)、从本设备出发访问外部设备的命令(Telnet客户端命令)、部分display命令等。 |
| 1 | 0 and 1 | 监控级 | 用于系统维护,可使用display等命令。 |
| 2 | 0,1 and 2 | 配置级 | 可使用业务配置命令,包括路由、各个网络层次的命令,向用户提供直接网络服务。 |
| 3-15 | 0,1,2 and 3 | 管理级 | 可使用用于系统基本运行的命令,对业务提供支撑作用,包括文件系统、FTP、TFTP下载、命令级别设置命令以及用于业务故障诊断的debugging命令等。 |
命令行视图
用户视图:用户可以完成查看运行状态和统计信息等功能。
系统视图:用户可以配置系统参数以及通过该视图进入其他的功能配置视图。
其他视图:比如接口视图,协议视图,用户可以进行接口参数和协议参数配置。
常见文件系统操作命令
1.查看当前目录 pwd
2.显示当前目录下的文件信息 dir
3.查看文本文件的具体内容 more
4.修改用户当前界面的工作目录 cd
5.创建新的目录 mkdir
6.删除目录
rmdir
7.复制文件
copy
8.移动文件
move
9.重命名文件
rename
10.删除文件
delete
11.恢复删除的文件
undelete
12.彻底删除回收站中的文件
reset recycle-bin
基本配置命令
1.配置设备名称
[Huawei] sysname name
2.设置系统时钟
clock timezone time-zone-name { add | minus } offset
用来对本地时区信息进行设置。
clock datetime [ utc ] HH:MM:SS YYYY-MM-DD
用来设置设备当前或UTC日期和时间。
clock daylight-saving-time
用来设置设备的夏令时。
3.配置命令等级
[Huawei] command-privilege level level view-name command-key
用来设置指定视图内的命令的级别。命令级别分为参观、监控、配置、管理4个级别,分别对应标识0、1、2、3。
4.配置用户通过Password方式登录设备
[Huawei]user-interface vty 0 4
[Huawei-ui-vty0-4]set authentication password cipher information
用来进入指定的用户视图并配置用户认证方式为password。系统支持的用户界面包括Console用户界面和VTY用户界面,Console界面用于本地登录,VTY界面用于远程登录。默认情况下,设备一般最多支持15个用户同时通过VTY方式访问。
5.配置用户界面参数
[Huawei] idle-timeout minutes [ seconds ]
用来设置用户界面断开连接的超时时间。如果用户在一段时间内没有输入命令,系统将断开连接。缺省情况下,超时时间是10分钟。
6.配置接口IP地址
[Huawei]interface interface-number
[Huawei-interface-number]ip address ip address
用来给设备上的物理或逻辑接口配置IP地址。
7.查看当前运行的配置文件
display current-configuration
8.配置文件保存
save
9.查看保存的配置
display saved-configuration
10.清除已保存的配置
reset saved-configuration
11.查看系统启动配置参数
display startup
用来查看设备本次及下次启动相关的系统软件、备份系统软件、配置文件、License文件、补丁文件以及语音文件。
12.配置系统下次启动时使用的配置文件
startup saved-configuration configuration-file
设备升级时,可以通过此命令让设备下次启动时加载指定的配置文件
13.配置设备重启
reboot
3.网络参考模型
OSI参考模型
•OSI 模型(Open Systems Interconnection Model),由国际化标准组织ISO (The International Organization for Standardization ) 收录在ISO 7489标准中并于1984年发布。
•OSI参考模型又被称为七层模型,由下至上依次为:
▫物理层:在设备之间传输比特流,规定了电平、速度和电缆针脚等物理特性。
▫数据链路层:将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测。
▫网络层:定义逻辑地址,供路由器确定路径,负责将数据从源网络传输到目的网络。
▫传输层:提供面向连接或非面向连接的数据传递以及进行重传前的差错检测。
▫会话层:负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
▫表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。
▫应用层:OSI参考模型中最靠近用户的一层,为应用程序提供网络服务。
TCP/IP参考模型
•TCP/IP模型在结构上与OSI模型类似,采用分层架构,同时层与层之间联系紧密。
TCP/IP标准参考模型将OSI中的数据链路层和物理层合并为网络接入层,这种划分方式其实是有悖于现实协议制定情况的,故融合了TCP/IP标准模型和OSI模型的TCP/IP对等模型被提出
网络层是在基于整个网络来描述报文转发的过程,但是报文在网络中是基于链路逐跳进行转发的,那么链路上如何实现报文的发送,由数据链路层来决定
OSI通过技术的角度进行分层
TCP/IP 站在用户角度
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提供通过简单桥接访问设备(接入设备)把一个网络的多个主机连接到远程访问集中器的功能。常见的应用有家庭宽带拨号上网。
常见协议标准化组织
IETF(Internet Engineering Task Force)
负责开发和推广互联网协议(特别是构成TCP/IP协议族的协议)的志愿组织,通过RFC发布新的或者取代老的协议标准。
IEEE(Institute of Electrical and Electronics Engineers)
IEEE制定了全世界电子、电气和计算机科学领域30%左右的标准,比较知名的有IEEE802.3(Ethernet)、IEEE802.11(Wi-Fi)等。
ISO(International Organization for Standardization)
在制定计算机网络标准方面,ISO是起着重大作用的国际组织,如OSI模型,定义于ISO/IEC 7498-1。
应用层
应用层为应用软件提供接口,使应用程序能够使用网络服务。应用层协议会指定使用相应的传输层协议,以及传输层所使用的端口等。
应用层的PDU被称为Data(数据)。PDU(协议数据单元) 由应用层产生的数据
应用层
应用程序: UI 用户接口,实现对应用层协议功能操作应用层协议:根据UI用户操作实现用户需要使用的功能
应用层协议如何选择传输层协议进行封装
主要考虑:上层数据业务的特点。如果要求数据能可靠的,有序的,有效率的传输,则使用传输层的TCP协议进行封装。
如果要求数据不要求可靠,实时性强,多点传输,则使用传输层的UDP协议进行封装
常见应用层协议
FTP(File Transfer Protocol)是一个用于从一台主机传送文件到另一台主机的协议,用于文件的“下载”和“上传”,采用C/S(Client/Server)结构。
Telnet是数据网络中提供远程登录服务的标准协议。 Telnet为用户提供了在本地计算机上完成远程设备工作的能力。
HTTP(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法
传输层
•传输层协议接收来自应用层协议的数据,封装上相应的传输层头部,帮助其建立“端到端”(Port to Port)的连接。
•传输层的PDU被称为Segment(段)。
传输层协议:
TCP:一种面向连接的、可靠的传输层通信协议,由IETF的RFC 793定义。
UDP:一种简单的无连接的传输层协议,由IETF的RFC 768定义。
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比特。
Urgent:紧急指针,只有当URG标志置1时紧急指针才有效。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。紧急指针指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。长度为16比特。
▫Options:选项字段(可选),长度为0-40字节。
UDP报文头部:
▫Source Port:源端口,标识哪个应用程序发送。长度为16比特。
▫Destination Port:目的端口,标识哪个应用程序接收。长度为16比特。
▫Length:该字段指定UDP报头和数据总共占用的长度。可能的最小长度是8字节,因为UDP报头已经占用了8字节。由于这个字段的存在,UDP报文总长不可能超过65535字节(包括8字节的报头,和65527字节的数据)。
▫Checksum:覆盖UDP头部和UDP数据的校验和,长度为16比特。
TCP和UDP – 端口号
端口号的作用?传输层为应用层协议提供区分和识别的服务
应用层协议在运行后,自动监听对应的传输层端口
客户端使用的源端口一般随机分配,目标端口则由服务器的应用指定;
源端口号一般为系统中未使用的,且大于1023;
目的端口号为服务端开启的应用(服务)所侦听的端口,如HTTP缺省使用80。
源端口: 发起TCP连接的主机随机产生,取值范围1824-65535 目的端口:通常用于标识需要访问的应用层协议,取值范围1-1@23 喘口号: 16bit,取值1-65535 己知端口号:1-1023 分配给应用层协议 未知端口号:1024-65535 通常作用源端口
传输层为什么要设计端口号:提高的地址的利用率,实现一个IP地址可以提供多种不同的应用层服务,并实现唯一TCP会话的区分。 五元组 SIP + Spornt + DIP + Dport + tcp/udp 通过五元组可以识别报文属于那个TCP或者UDP会话,并正确提交给应用层协议处理
五元组详解
-
源IP地址(Source IP Address):发起通信的一方所在的网络位置。
-
目的IP地址(Destination IP Address):接收通信的一方所在的网络位置。
-
源端口号(Source Port Number):发起通信的一方使用的端口号。
-
目的端口号(Destination Port Number):接收通信的一方监听的端口号。
-
传输层协议(Transport Layer Protocol):用于数据传输的协议,通常是TCP或UDP
这五个元素组合在一起可以唯一确定一次通信过程中的一个连接
TCP的建立(三次握手)
TCP报文首部 源端口和目的端口,各占2个字节,分别写入源端口和目的端口; 序号,占4个字节,TCP连接中传送的字节流中的每个字节都按顺序编号。例如,一段报文的序号字段值是 301 ,而携带的数据共有100字段,显然下一个报文段(如果还有的话)的数据序号应该从401开始; 确认号,占4个字节,是期望收到对方下一个报文的第一个数据字节的序号。例如,B收到了A发送过来的报文,其序列号字段是501,而数据长度是200字节,这表明B正确的收到了A发送的到序号700为止的数据。因此,B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置为701; 数据偏移,占4位,它指出TCP报文的数据距离TCP报文段的起始处有多远; 保留,占6位,保留今后使用,但目前应都位0; 紧急URG,当URG=1,表明紧急指针字段有效。告诉系统此报文段中有紧急数据; 确认ACK,仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1; 推送PSH当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即就能收到对方的响应,这时候就将PSH=1; 复位RST当RST=1,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立连接; 同步SYN,在连接建立时用来同步序号。当SYN=1,ACK=0,表明是连接请求报文,若同意连接,则响应报文中应该使SYN=1,ACK=1; 终止FIN,用来释放连接。当FIN=1,表明此报文的发送方的数据已经发送完毕,并且要求释放; 窗口,占2字节,指的是通知接收方,发送本报文你需要有多大的空间来接受; 检验和,占2字节,校验首部和数据这两部分; 紧急指针占2字节,指出本报文段中的紧急数据的字节数; 选项长度可变,定义一些其他的可选的参数。
TCP连接建立的详细过程如下:
由TCP连接发起方发送第一个SYN位置1的TCP报文。初始序列号a为一个随机生成的数字,因为没收到过来自PC2的任何报文,所以确认序列号为0
接收方接收到合法的SYN报文之后,回复一个SYN和ACK置1的TCP报文。初始序列号b为一个随机生成的数字,同时因为此报文是回复给PC1的报文,所以确认序列号为a+1;
PC1接收到PC2发送的SYN和ACK置位的TCP报文后,回复一个ACK置位的报文,此时序列号为a+1,确认序列号为b+1。PC2收到之后,TCP双向连接建立。
最开始的时候客户端和服务器都是处于CLOSED状态。主动打开连接的为客户端,被动打开连接的是服务器。
TCP服务器进程先创建传输控制块TCB,时刻准备接受客户进程的连接请求,此时服务器就进入了LISTEN(监听)状态; TCP客户进程也是先创建传输控制块TCB,然后向服务器发出连接请求报文,这是报文首部中的同部位SYN=1,同时选择一个初始序列号 seq=x ,此时,TCP客户端进程进入了 SYN-SENT(同步已发送状态)状态。TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序号。 TCP服务器收到请求报文后,如果同意连接,则发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己初始化一个序列号 seq=y,此时,TCP服务器进程进入了SYN-RCVD(同步收到)状态。这个报文也不能携带数据,但是同样要消耗一个序号。 TCP客户进程收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,自己的序列号seq=x+1,此时,TCP连接建立,客户端进入ESTABLISHED(已建立连接)状态。TCP规定,ACK报文段可以携带数据,但是如果不携带数据则不消耗序号。 当服务器收到客户端的确认后也进入ESTABLISHED状态,此后双方就可以开始通信了。
为什么TCP客户端最后还要发送一次确认 主要防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误。
如果使用的是两次握手建立连接,假设有这样一种场景,客户端发送了第一个请求连接并且没有丢失,只是因为在网络结点中滞留的时间太长了,由于TCP的客户端迟迟没有收到确认报文,以为服务器没有收到,此时重新向服务器发送这条报文,此后客户端和服务器经过两次握手完成连接,传输数据,然后关闭连接。此时此前滞留的那一次请求连接,网络通畅了到达了服务器,这个报文本该是失效的,但是,两次握手的机制将会让客户端和服务器再次建立连接,这将导致不必要的错误和资源的浪费。
如果采用的是三次握手,就算是那一次失效的报文传送过来了,服务端接受到了那条失效报文并且回复了确认报文,但是客户端不会再次发出确认。由于服务器收不到确认,就知道客户端并没有请求连接。
TCP的序列号与确认序列号
TCP使用序列号和确认序列号字段实现数据的可靠和有序传输
•假设PC1要给PC2发送一段数据,传输过程如下:
-
PC1将全部待TCP发送的数据按照字节为单位编上号。假设第一个字节的编号为“a+1”,第二个字节的序号为“a+2”,依次类推。
-
PC1会把每一段数据的第一个字节的编号作为序列号(Sequence number),然后将TCP报文发送出去。
-
PC2在收到PC1发送来的TCP报文后,需要给予确认同时请求下一段数据,如何确定下一段数据呢?序列号( a+1 )+载荷长度=下一段数据的第一个字节的序号(a+1+12)
-
PC1在收到PC2发送的TCP报文之后,发现确认序列号为“a+1+12” ,说明“a+1”到“a+12”这一段的数据已经被接受,需要从“a+1+12”开始发送。
为了提升发送效率,也可以一次性发送多段数据,由接收方统一确认
TCP的窗口滑动机制
我们可以大概看一下上图的模型:
1.首先是AB之间三次握手建立TCP连接。在报文的交互过程中,A将自己的缓冲区大小(窗口大小)3发送给B,B同理,这样双方就知道了对端的窗口大小。
2.A开始发送数据,A连续发送3个单位的数据,因为他知道B的缓冲区大小。在这一波数据发送完后,A就不能再发了,需等待B的确认。
3.A发送过来的数据逐渐将缓冲区填满。
4.这时候缓冲区中的一个报文被进程读取,缓冲区有了一个空位,于是B向A发送一个ACK,这个报文中指示窗口大小为1。
A收到B发过来的ACK消息,并且知道B将窗口大小调整为1,因此他只发送了一个单位的数据并且等待B的下一个确认报文。
5.如此反复。
TCP连接的释放(四次挥手)
数据传输完毕后,双方都可释放连接。最开始的时候,客户端和服务器都是处于ESTABLISHED状态,然后客户端主动关闭,服务器被动关闭。
客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。 服务器收到连接释放报文,发出确认报文,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状态。 服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。
为什么客户端最后还要等待2MSL? MSL(Maximum Segment Lifetime),TCP允许不同的实现可以设置不同的MSL值。
第一,保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器。
第二,防止类似与“三次握手”中提到了的“已经失效的连接请求报文段”出现在本连接中。客户端发送完最后一个确认报文后,在这个2MSL时间中,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样新的连接中不会出现旧连接的请求报文。
为什么建立连接是三次握手,关闭连接确是四次挥手呢
建立连接的时候, 服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。 而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。
如果已经建立了连接,但是客户端突然出现故障了怎么办 TCP还设有一个保活计数器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。
tcp 重传机制:发送方发送segment后,并不会在缓存中删除这个segment,需要收到该segment的确认报文后,才清空该segment,如果在重传计时器超时后,收不到确认,则在缓存中重传该segment.
tcp空闲超时时间:为了避免大量空闲的TCP会话导致系统资源的浪费,设置TCP空闲超时时间,当TCP会话在空闲超时时间内没有数据交互,则断开TCP连接。
UDP:不保证报文转发的可靠性,没有流控机制,适用于实时性的业务传输,比如:语音,视频,组播但是不可靠,没有流控机制不是缺点,而是满足上层应用的需求而被开发出来的。
telnet
ftp
http tcp (端口号解决应用区分,seq num,ack num协助应用层在传输过程数据的可靠性)但是TCP/UDP没有解决发送者和接收者的标识,以及寻址的问题。
smtp
pop3
所有segment需要进一步通过封装网络层头部信息,解决报文发送者和接受者标识,以及报文寻址和转发的问题。当路由器收到IP报文后,根据报文的目的IP查找路由表,根据路由表信息将报文从本地出接口发送给下一跳路由器。
网络层
传输层负责建立主机之间进程与进程之间的连接,而网络层则负责数据从一台主机到另外一台主机之间的传递。
网络层的PDU被称为Packet(包)。
网络层也叫Internet层
负责将分组报文从源主机发送到目的主机 。
网络层作用
为网络中的设备提供逻辑地址。
负责数据包的寻径和转发。
常见协议如IPv4,IPv6、ICMP,IGMP等。
网络层协议工作过程
源设备发出的报文会在其网络层头部携带该报文的源及目的设备的网络层地址;
具备路由功能的网络设备(例如路由器等)会维护路由表(相当于它的地图);
当这些网络设备收到报文时,会读取其网络层携带的目的地址,并在其路由表中查询该地址,找到匹配项后,按照该表项的指示转发数据。
当采用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(帧)。
数据链路层位于网络层和物理层之间:
数据链路层向网络层提供“段内通信”。
负责组帧、物理编址、差错控制等功能。
常见的数据链路层协议有:以太网、PPPoE、PPP等。
以太网与MAC地址
MAC地址由48比特(6个字节)长,12位的16进制数字组成。例如:48-A4-72-1C-8F-4F
以太网定义
以太网是一种广播式数据链路层协议,支持多点接入。
个人电脑的网络接口遵循的就是以太网标准。
一般情况下,一个广播域对应着一个IP网段。
以太网MAC地址
MAC (Media Access Control)地址在网络中唯一标识一个网卡,每个网卡都需要且会有唯一的一个MAC地址。
MAC用于在一个IP网段内,寻址找到具体的物理设备。
工作在数据链路层的设备。例如以太网交换机,会维护一张MAC地址表,用于指导数据帧转发。
地址解析协议(ARP)
ARP (Address Resolution Protocol)地址解析协议:
根据已知的IP地址解析获得其对应的MAC地址。
ARP工作流程
-
ARP请求
- 当主机A想要向主机B发送数据包时,它首先检查自己的ARP缓存表中是否有目标主机B的MAC地址。
- 如果没有找到,主机A会通过广播方式发送一个ARP请求帧到局域网中的所有设备。ARP请求帧包含源主机的IP地址、源MAC地址以及目标主机的IP地址。
-
ARP响应
- 局域网内的所有设备都会接收到这个ARP请求帧,但只有目标IP地址对应的主机B会处理并回应。
- 主机B收到ARP请求后,会返回一个ARP响应帧给主机A,其中包含了主机B的MAC地址。ARP响应是单播形式发送的,因为它已经知道了目的主机A的MAC地址。
-
更新ARP缓存
- 主机A收到ARP响应后,就会得到主机B的MAC地址,并将其与对应的IP地址一起存入自己的ARP缓存表中。
-
数据传输
-
有了主机B的MAC地址后,主机A就可以使用该MAC地址来封装数据包,并将其发送给主机B。
ARP缓存表存储了IP地址到MAC地址的映射关系,这样在同一局域网内的设备之间进行通信时就不必每次都广播ARP请求
-
物理层
数据到达物理层之后,物理层会根据物理介质的不同,将数字信号转换成光信号、电信号或者是电磁波信号。 物理层的PDU被称为比特流(Bitstream)
物理层位于模型的最底层:
•负责比特流在介质上的传输。
•规范了线缆、针脚、电压、接口等物理特性规范。
•常见的传输介质有:双绞线、光纤、电磁波等。
常见传输介质
双绞线:当今以太网最常见的传输介质,按照抗电磁干扰能力还可以分为:
STP-屏蔽双绞线
UTP-非屏蔽双绞线
光纤传输,按照功能部件可分为:
光纤:光传输介质,简单的说,就是一根玻璃纤维,用于约束光传输的通道。
光模块:将电信号与光信号互转的器件,产生光信号。
串口电缆在WAN(Wide Area Network,广域网)中大规模使用,根据WAN线路类型不同,串口电缆在设备上连接的接口类型也不同:异/同步串口、ATM接口、POS接口、CE1/PRI接口等。
无线信号的传输可以通过电磁波进行,例如:无线路由器将数据通过调制以电磁波发送出去,移动终端的无线网卡将电磁波解调,得到数据,完成从无线路由器到移动终端的数据传输。
4.网络层协议及IP编址
网络层协议
网络层经常被称为IP层。但网络层协议并不只是IP协议,还包括ICMP(Internet Control Message Protocol)协议、IPX(Internet Packet Exchange)协议等。
IP协议
IP是Internet Protocol的缩写。 Internet Protocol本身是一个协议文件的名称,该协议文件的内容非常少,主要是定义并阐述了IP报文的格式。 经常被提及的IP,一般不是特指Internet Protocol这个协议文件本身,而是泛指直接或间接与IP协议相关的任何内容。
作用:为网络层的设备提供逻辑地址,负责数据包的寻址和转发
版本▫IPv4(Internet Protocol Version 4)协议族是TCP/IP协议族中最为核心的协议族。它工作在TCP/IP协议栈的网络层,该层与OSI参考模型的网络层相对应。
IPv6(Internet Protocol Version 6)是网络层协议的第二代标准协议,也被称为IPng(IP Next Generation)。它是Internet工程任务组IETF(Internet Engineering Task Force)设计的一套规范,是IPv4(Internet Protocol Version 4)的升级版本。
数据封装
应用数据需要经过TCP/IP每一层处理之后才能通过网络传输到目的端,每一层上都使用该层的协议数据单元PDU(Protocol Data Unit)彼此交换信息。不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。
如上层数据在传输层添加TCP报头后得到的PDU被称为Segment(数据段);
数据段被传递给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包);
数据包被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧);
最后,帧被转换为比特,通过网络介质传输。
这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装。
我们主要讨论数据在网络层的封装,如果封装为IP协议,则被称为IP Packet(IP数据包)。
IPV4报文格式
•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数据包的长度。
Identification:16 bit,标识,分片重组时会用到该字段。
Flags:3 bit,标志位。
Fragment Offset:12 bit,片偏移,分片重组时会用到该字段。
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,片偏移,分片重组时会用到该字段。指出较长的分组在分片后,该片在原分组中的相对位置,与更多段位组合,帮助接收方组合分段的报文。
生存时间 (Time to Live, TTL)
Time to Live:8 bit,生存时间。可经过的最多路由数,即数据包在网络中可通过的路由器数的最大值。
报文在网段间转发时,如果网络设备上的路由规划不合理,就可能会出现环路,导致报文在网络中无限循环,无法到达目的端。环路发生后,所有发往这个目的地的报文都会被循环转发,随着这种报文逐渐增多,网络将会发生拥塞。
为避免环路导致的网络拥塞,IP报文头中包含一个生存时间TTL(Time To Live)字段。报文每经过一台三层设备,TTL值减1。初始TTL值由源端设备设置。当报文中的TTL降为0时,报文会被丢弃。同时,丢弃报文的设备会根据报文头中的源IP地址向源端发送ICMP错误消息。(注意:网络设备也可被配置为不向源端发送ICMP错误消息。)
协议号 (Protocol)
IP报文头中的协议号字段标识了将会继续处理该报文的协议。
即指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上报给哪个进程处理
目的端的网络层在接收并处理报文以后,需要决定下一步对报文如何处理。IP报文头中的协议字段标识了将会继续处理报文的协议。
该字段可以标识网络层协议,如ICMP(Internet Control Message Protocol,因特网控制报文协议,对应值0x01);
也可以标识上层协议,如TCP(Transmission Control Protocol,传输控制协议,对应值0x06)、UDP(User Datagram Protocol,用户数据包协议,对应值0x11)。
IP地址
IP地址在网络中用于标识一个节点(或者网络设备的接口)。
IP地址用于IP报文在网络中的寻址
•IP地址表示
▫IP地址是长度是32 bit,由4个字节组成。为了阅读和书写方便,IP地址通常采用点分十进制数来表示。
点分十进制表示法
▫ IP地址表现形式能够帮助我们更好的使用和配置网络,但通信设备在对IP地址进行计算时使用的是二进制的操作方式,因此掌握十进制、二进制的转换运算非常有必要。
IPv4地址范围
▫00000000.00000000.00000000.00000000-11111111.11111111.11111111.11111111,即0.0.0.0~255.255.255.255。
IP地址寻址
网络号用于表示主机所在的网络,类似于“XX省XX市XX区XX小区”的作用。
主机号用于表示网络号所定义的网络范围内某个特定的主机接口,类似于门牌号“XX栋XX号”的作用。
网络寻址:
▫二层网络寻址:可直接通过IP地址,找到对应的主机接口。
▫三层网络寻址:利用网关转发来自不同网段之间的数据包。
网关:
报文转发过程中,首先需要确定转发路径以及通往目的网段的接口。如果目的主机与源主机不在同一网段,报文需要先转发到网关,然后通过网关将报文转发到目的网段。
网关是指接收并处理本地网段主机发送的报文并转发到目的网段的设备。为实现此功能,网关必须知道目的网段的IP地址。网关设备上连接本地网段的接口地址即为该网段的网关地址。
IP地址类型
0.0.0.0 - 255.255.255.0
单播地址
- A类地址:范围从
1.0.0.0到126.255.255.255。 - B类地址:范围从
128.0.0.0到191.255.255.255。 - C类地址:范围从
192.0.0.0到223.255.255.255。
A类地址的结构:8位网络位,24位主机位 θ开头的就是A类 θ.θ.θ.θ/8-127.255.255.255/8可用A类 1.θ.θ.θ-126.255.255.255
B类地址的结构:16位网络位,16位主机位 10开头的就是B类 128.0.0.0/16-191.255.255.255/16
C类地址的结构:24位网络位,8位主机位 110开头的就是C类 192.θ.θ.θ/24-223.255.255.255/24
其中A类 θ.θ.θ.θ-θ.255.255.255不能分配使用, 127,θ.θ.θ-127,255,255,255系统进程间内部通信使用或用于测试。
单播地址分为私网地址和公网地址
私网地址:任何人或者组织可以随意使用,用于企业内部/组织内部进行网络通信使用。
A类私网地址:10,0,0,0/8-10,255,255,255/8
B类私网地址:172,16,0,0/16-172,31,255,255/16
C类私网地址:192,168,0,0/24-192,168,255,255/24
公网地址:由当地ISP进行分配,用于实现互联网的访问。
凡是目的IP地址为127.X.X.X的报文,不可能发送到链路上。
组播地址
D类地址
E类地址 1111开头的就是E类
任何一个网段都有2个特殊地址
1 网络地址(网络号):主机位全为0的地址,不能分配给接口使用。代表网段本身,用于标识一个网段,
2 广播地址 :主机位全为1的地址 ,不能分配给接口使用,代表网段中的所有接口,实现广播通信
3 可用地址 :主机位即不全0,也不全1,可以分配给该网段内的接口使用。
网络部分相同主机,我们认为是同一个网段的主机。
主机部分区分同一个网段的不同主机。
所谓的地址结构:就是IP地址网络部分长度以及主机部分的长度
如何判断地址结构:通过子网掩码
子网掩码:32bit长度,和IP地址长度一致。子网掩码等于1的位代表网络部分,等于0的位代表主机部分
注意:IP地址的网络部分是连续的,主机部分也是连续,所以子网掩码1是连续,0也是连续的
192.168.1.1/255.255.255.0 掩码表示法
192.168.2.1/255.255.255.0 掩码表示法
192.168.1.1/24 前缀长度表示法 24 表示该地址前面24bit为网络部分,后面8bit为主机部分
192.168.2.1/24 前缀长度表示法
两者本质一致。
/24 = 255.255.255.0
/16 = 255.255.0.0
/8 = 255.0.0.0
| 有限广播地址 | 255.255.255.255 | 可作为目的地址,发往该网段所有主机 (受限于网关) |
|---|---|---|
| 任意地址 | 0.0.0.0 | “任何网络”的网络地址; “这个网络上这个主机接口”的IP地址 |
| 环回地址 | 127.0.0.0/8 | 测试设备自身的软件系统 |
| 本地链路地址 | 169.254.0.0/24 | 当主机自动获取地址失败后,可使用该网段中的某个地址进行临时通信 |
ICMP重定向
重定向过程
PC1需要和PC2通信,PC1的默认网关路由器是R1,那么当PC1发送报文给PC2时报文会被送到R1。R1收到PC1发送的报文以后会发现实际上PC1直接发送给R2更好,它将发送一个重定向向报文给PC1,其中报文路径下一跳地址为R2,Destination Address为PC2(该部分为ICMPv6重定向报文携带的目的地址)。收到了重定向报文之后,会在默认路由表中添加一个主机路由,以后发往PC2的报文就直接发送给R2。
当路由器收到一个报文后,只有在如下情况下,路由器会向报文发送者发送重定向报文: 报文的目的地址不是一个组播地址。 报文并非通过路由转发给路由器。 经过路由计算后,路由的下一跳出接口是接收报文的接口。 路由器发现报文的最佳下一跳IP地址和报文的源IP地址处于同一网段。 路由器检查报文的源地址,发现自身的邻居表项中有用该地址作为全球单播地址或链路本地址的邻居。
ICMP差错控制
-
目标不可达(Destination Unreachable):如果目的主机或路由器无法交付数据包,它可能会发送一个“目标不可达”消息给源主机。这可能是因为网络不可达、主机不可达、端口不可达或者协议不可达等原因。
-
超时(Time Exceeded):如果数据包在网络中传输的时间超过了生存时间(TTL)字段允许的最大值,路由器就会丢弃这个数据包并发送一个“超时”消息给源主机。
-
参数问题(Parameter Problem):如果数据包的头部或负载存在无效的参数,接收方可以发送一个“参数问题”消息给源主机。
-
重定向(Redirect):路由器可以发送一个“重定向”消息给源主机,指示源主机应该使用不同的下一跳来达到目的地。这样可以帮助优化网络流量和减少延迟。
-
源抑制(Source Quench):虽然现在已经很少使用,但过去曾经有一种称为“源抑制”的ICMP类型,用来通知源主机降低其发送速率,以减轻网络拥塞。
ICMP错误报告
ICMP (Internet Control Message Protocol) 错误报告是当 IP 数据包在网络传输过程中遇到问题时,由路由器或目标主机回送给原始发送者的 ICMP 消息。这些报告提供了有关未能成功投递 IP 数据包的原因的信息。以下是几种常见的 ICMP 错误报告类型:
- 目标不可达 (Destination Unreachable):
- 代码 0 - 网络不可达:指定的目标网络目前无法访问。
- 代码 1 - 主机不可达:指定的目标主机目前无法访问。
- 代码 2 - 协议不可达:指定的目标主机不支持请求中的协议。
- 代码 3 - 端口不可达:指定的目标主机上的端口无法接受数据报。
- 代码 4 - 需要分片但 DF 标志设置:数据报太大,无法通过网络中的某个部分,且设置了“不分片”标志。
- 代码 5 - 源路由失败:数据报中包含的源路由信息有误或无法处理。
- 代码 6 - 目标网络未知:路由器不知道如何到达指定的网络。
- 代码 7 - 目标主机未知:路由器不知道如何到达指定的主机。
- 代码 8 - 网络禁止访问:网络策略不允许访问指定网络。
- 代码 9 - 主机禁止访问:网络策略不允许访问指定主机。
- 代码 10 - 网络不可达(安全原因):出于安全原因,网络不可达。
- 代码 11 - 主机不可达(安全原因):出于安全原因,主机不可达。
- 超时 (Time Exceeded):
- 代码 0 - 生存时间 (TTL) 超时:数据报的 TTL 字段降为 0,因此数据报被丢弃。
- 代码 1 - 分片重组超时:数据报的一个或多个分片未能在合理时间内重组。
- 参数问题 (Parameter Problem):
- 代码 0 - 指针指示错误 IP 头部:数据报的 IP 头部存在错误。
- 代码 1 - 未实现必需选项:数据报包含了路由器不支持的必需选项。
- 代码 2 - 错误的 IP 头部指针:数据报的 IP 头部中的指针指向了错误的位置。
- 源点抑制 (Source Quench):
- 这种类型的 ICMP 消息用于告知发送者网络拥塞,建议减少数据流。不过,这种机制现在已经被认为不太有效,并且在现代网络中不再推荐使用。
ICMP 错误报告对于网络故障排除非常重要,它们可以帮助管理员和用户诊断网络问题。然而,由于 ICMP 消息本身也是网络流量的一部分,有时可能会被过滤掉或被防火墙阻止。
ICMP的另一个典型应用是Tracert。Tracert基于报文头中的TTL值来逐跳跟踪报文的转发路径。为了跟踪到达某特定目的地址的路径,源端首先将报文的TTL值设置为1。该报文到达第一个节点后,TTL超时,于是该节点向源端发送TTL超时消息,消息中携带时间戳。然后源端将报文的TTL值设置为2,报文到达第二个节点后超时,该节点同样返回TTL超时消息,以此类推,直到报文到达目的地。这样,源端根据返回的报文中的信息可以跟踪到报文经过的每一个节点,并根据时间戳信息计算往返时间。
- 目标不可达 (Destination Unreachable):
补充
IP网络 所有的数据都是以帧为单位进行处理的。
因为HUB是总线型的物理层网络设备,只对0和1做处理
HUB转发机制:从一端口收到的广播,单播,组播从其他所有端口发送一份。
交换机
不隔离广播,但是隔离冲突,属于数据链路层网络设备,不是总线型网络设备。
转发机制:从一个端口收到的广播帧/组播帧/未知MAC地址的单播帧,从其他所有端口发送一份,所有交换机不隔离广播,于存在交换矩阵,所以端口之间通信不存在冲突,因此交换机的一个端口就是一个冲突域