TCP/IP入土指南
1 网络基础知识
1.1 协议
1.1.1 什么是协议?
协议是计算机与计算机之间通过网络实现通信时事先达成的一种“约定”,这个约定使各个厂商的设备以及不同的CPU和操作系统组成的计算机之间可以实现通信。当今这种协议为TCP/IP协议。
1.1.2 分组交换协议
分组交换:将大数据分割为一个个包的饺馅单位进行传输的方法。一个较大的数据被分为多组时,为了表明时原始数据的那一部分,有必要将分组的序号写入包中,接收端会根据这个序号,再将每个分组按照序号重新装配为原始数据。
1.1.3 OSI参考模型
OSI(Open Systems Interconnection开放式通信系统互联参考模型)参考模型是由ISO(International Organization for Standards国际标准化组织)制定的。OSI模型对通信中必要的功能做了归纳,将复杂的通信协议分成易于理解的七层
分层名称 | 功能 | 功能概览 | 释义 | |
---|---|---|---|---|
7 | 应用层 | 针对特定应用的协议 | 针对每个应用的协议 | 为应用程序提供服务并规定应用程序中通信相关的细节。包括文件传输、电子邮件、远程登录等 |
6 | 表示层 | 设备固有数据格式和网络标准数据格式的转换 | 接收不同表现形式的信息,如文字流、图像、声音等 | 将应用处理的信息转换为适合网络传输的格式,获奖来自下一层的数据转换为上层能够处理的格式。因此主要负责数据格式的转换。因为不同设备对同一比特流的解释可能不同,因此它们保持一致时这一层的主要作用 |
5 | 会话层 | 通信管理。负责建立和断开通信连接(数据流动的逻辑通路)。管理传输层以下的分层 | 何时建立连接,何时断开链接以及保持多久的连接 | 负责建立和断开通信连接(数据流动的逻辑通路),以及数据的分割等数据传输相关的管理 |
4 | 传输层 | 管理两个节点之间的数据传输。负责可靠传输(确保数据被可靠的传送到目标地址)。 | 是否有数据丢失 | 起着可靠传输的作用。只在通信双方节点上进行处理,无需在路由器上进行处理 |
3 | 网络层 | 地址管理与路由选择 | 讲过那个路由传递到目标地址 | 将数据传输到目标地址。目标地址可以是多个网络通过路由器连接而成的某一个地址。因此这一层主要负责寻址和路由管理 |
2 | 数据链路层 | 互联设备之间传送和识别数据帧 | 数据帧和比特流之间的转换 | 负责物理层面上互联的、节点之间的通信传输。例如一个一以太网相连的两个节点之间的通信。将0、1序列划分为具有意义的数据帧传送给对端(数据帧的生成和接收) |
1 | 物理层 | 以0、1代表电压的高低、灯光的闪灭、界定连接器和网线的规格 | 比特流和电子信号之间的转换。比特流于网线的规格 | 负责0、1比特流于电压的高低和光的闪灭之间的互换 |
- OSI参考模型在实际应用中的作用:以A给B发送一个内容为“早上好”的邮件为例
- A端(发送端)的处理
- 应用层:当用户点击发送的时候开始,进入应用层协议的处理。应用层在要传输的数据前段加入标签信息,表明邮件内容为“早上好”和收件人B,B计算机上的邮件系统进行内容回过去,如果获取失败则返回一个异常信息给A
- 表示层:由于A、B之间的邮件处理系统可能有所不同,所以在传输的时候需要将“某个计算机的特定数据格式”转换为“网络通用的标准数据格式”后发送。接收端需要将“网络通用的标准数据格式”转换为“本计算机的特定数据格式”后进行处理。
- 会话层:假如A要发送给B5封邮件,这五封邮件可以一封封发生,也可以一起发送。会话层就是决定采用何种方式进行发送。会话层也会如同上两层一样在数据前段附加收不活标签信息,记录数据传输数据的顺序信息。
- 传输层:主机A确保与主机B之间的通信并准备发送数据。这一过程叫做“建立连接”。同时在通信结束后有必要将连接断开。当发生网络故障等问题导致B只收到了“早上”,B将未收到后部分的事实发送给A,A将后面的部分重新发送给B,并再次确认对端是否收到。数据传输层即进行上述的处理。
- 网络层:将数据通过网络进行发送。
- 数据链路层、物理层:数据传输实际上是通过物理的传输介质实现的。数据链路层的作用就是在这些通过传输介质互联的设备之间进行数据处理。
- B端(接收端)的处理
- 主机B上的处理流程与A相反。他从物理层开始接收到的数据住层发送给上一份层处理,从接收端主机B上使用邮件客户端软件接收用户A发过来的邮件,解析为“早上好”
- A端(发送端)的处理
1.2 传输方式
1.2.1 面向有连接型与面向无连接型
- 面向有连接型:在发送数据之前要在收发钻之间建立一个连接通道。
- 面向无连接型:面向无连接型不需要建立和断开链接,发送端可以在任何时候发送数据,同时接收端也可能在任何时候接收到数据。同时接收端也有可能不存在。
1.2.2 电路交换与分组交换
网络通信方式大致分为电路交换与分组交换。电路交换主要用于电话网。TCP/IP技术合作呢故事采用了分组交换技术
- 电路交换:计算机首先连接到交换机中,交换机与交换机之间由众多通信线路连接,交换机之间的线路如果被使用,如果其他用户想要使用此条线路则需要等待上一用户断开链接。如果并发数超过交换机之间的通信线路数,则无法实现通信。
- 分组交换:为了解决电路交换的问题,人们将连接到通信电路的计算机将所要发送的数据分成多个数据包,按照顺序排列后分别发送。由于分组过程中,已经在每个分组首部写入了发送端和接收端的地址,及时使用同一线路同时为多个用户提供服务,也可以明确数据的目的地以及与哪台计算机通信。
1.2.3 广播通信
- 单播:一对一通信
- 广播:一对多通信。只有在广播范围内才能接收到广播信息
- 多播:一对多通信,与广播不同的是,多播要限定在某一组主机作为接收端
- 任播:一对一通信,指定在一组计算机中的某一台作为接收端。
通信方式 | 接受对象数量 | 是否限定接受对象 | 能接收到信息对象数量 |
---|---|---|---|
单播 | 一 | 是 | 一 |
广播 | 多 | 否 | 多 |
多播 | 多 | 是 | 多 |
任播 | 一 | 否 | 多 |
1.3 地址
- 通信传输中,发送端和接收端可以被视为通信主体。他们都是有一个所谓的“地址”的信息加以标识出来。然而实际上在计算机通信中,每一层的协议所使用的地址不尽相同。例如TCP/IP使用MAC地址(3.2.1节)、IP地址(4.2.1节)、端口号(6.2节)等信息作为地址标识。
1.3.1 地址的唯一性
同一个通信网络中不允许有两个相同地址的通信主体存在,即为地址的唯一性
1.3.2 地址的层次性
当地址书并不是很多的时候,有唯一地址就可以定位相互通信的,但是当地址总数越来越多的时候,有必要引入地址的层次性进行快速检索
虽然MAC地址和IP地址都具有唯一性,但是MAC地址是硬件的唯一地址,无法确定某个网卡被用在了何处,所以MAC地址对寻址并没有实际作用,所以IP地址必不可少。
- IP地址如何实现分层
- IP地址由网络号和主机号组成,即通信主体的IP地址不同。若主机号不同,网络号相同,说明他们处于同一网段。
1.4 网络构成要素
- 通信媒介
- 网卡
- 中继器
- 网桥/2层交换机
- 路由器/3层交换机
- 4~7层交换机
- 网关
2 TCP/IP基础知识
2.1 TCP/IP具体含义
实际上TCP/IP是指利用IP进行通信时所必须用到的协议群的统称,所以有事也成TCP/IP为网际协议族。
2.2 互联网与TCP/IP
- 什么是互联网?
- 互联网是指由ARPANET发展而来,连接全世界的计算机的网络
- 互联网与TCP/IP关系
- 互联网的协议是TCP/IP
2.3 TCP/IP协议分层模型
2.3.1 TCP/IP与OSI参考模型
2.3.1.1 互联网层(网络层)
互联网层使用IP协议,它相当于OSI模型中的第3层网络层。IP协议基于IP地址转发分包数据。
TCP/IP分层中的互联网层与传输层的功能通常由操作系统提供。尤其是路由器,它必须实现通过互联网层转发分组数据包的功能。此外连接互联网的所有主机跟路由器必须都实现IP的功能。其他连接互联网的网络设备(如网桥、中继器、集线器)就没必要一定实现IP/TCP的功能。
2.3.1.2 IP
IP是跨越网络传送的数据包,使整个互联网都能收到数据的协议,这期间使用IP地址作为主机的标识。
IP还隐含数据链路的功能。通过IP互相通信的主机之间不论经过怎样的底层数据链路都能实现通信。
虽然IP也是分组交换的一种协议,但是它不具有重发机制。及时分组数据包未能达到对端主机也不会重发。因此,属于非可靠性传输协议。
2.3.1.3 ICMP
IP数据包在发送途中一旦发汗恶搞异常导致无法发送到对端目标地址时,需要给发送端发送一个发生异常的通知。ICMP就是为这一功能而制定的。他有事也被用来诊断网络健康状况。
2.3.1.4 TCP
TCP是一种面向有连接的传输层协议。它可以保证两段通信主机之间的通信可达。TCP能够正确处理在传输过程中的丢包、传输乱序乱掉等异常。此外TCP还可以有效利用带宽,缓解网络拥堵。
2.3.1.5 UDP
UDP是一种面向无连接的传输层协议。UDP不会关注对端是否接收到传输数据,如果检查对端事都收到分组数据包,或者对端是否连接到网络,则需要在应用程序中实现
2.3.1.6 WWW
WWW中文为万维网,是一种互联网上读取数据的规范,也称作Web、W3。
2.3.1.7 FTP文件传输
FTP是一种文件传输协议,FTP在进行文件传输时会建立两个TCP连接,分别发出传送请求时所要用到的控制连接和实际传输数据时所要用到的数据连接。FTP传输过程中可以选择使用二进制方式还是文本方式。
2.3.1.8 TELNET和SSH远程登录
TELNET(TELetypewriter NETwork)与SSH(Secure SHell)是网络中远程登录的常用协议
2.3.1.9 SNMP网络管理
在TCP/IP中进行网络管理的时候,采用SNMP(Simple Network Management Protocol)协议。使用SNMP管理的主机、网桥、路由器称作SNMP代理(Agent),而进行管理的那一段叫做管理器(Manager)。SNMP正式Agent和Manger所用到的协议。
在SNMP代理端,保存着网络接口信息、通信数据量、异常数据量以及设备温度等信息,这些信息可以通过MIB(Management Infomation Base)访问。因此在TCP/IP的网络管理中,SNMP属于应用协议,MIB属于表示层协议。
2.3.2 TCP/IP 分层模型与通信模型
2.3.2.1 数据包首部
- 数据单位
- 包:全能型术语
- 帧:表示数据链路层中包的单位
- 数据报:IP和UDP等网络层以上的分层中包的单位
- 段:TCP数据流中的信息
- 消息:应用协议中数据的单位
2.3.2.2 发送数据包
我们还是以A想B发送一封“早上好”的邮件为例。
- 应用程序处理
- 当用户点击发送时开始TCP/IP通信,应用在发送邮件的那一刻建立TCP连接,从而利用这个TCP连接发送数据。他的过程首先是将应用的数据发送给下一层的TCP,在做实际的转发处理。
- TCP模块的处理
- TCP根据应用的指示,负责建立连接、发送数据以及断开连接。TCP提供讲应用层发来的数据顺利发送至对端的可靠传输。
- 为了实现TCP的这一功能,需要在应用层数据的起那段附加一个TCP首部。TCP首部中包括源端口号和目标端口号(用以识别发送主机跟接受主机上的应用)、序号(用以表示该包中数据是发送端整个数据中的低级字节的序列号)、计算校验和以及判断数据是否被损坏。
- 最后将附加了TCP首部的包再发送给IP
- IP模块的处理
- IP将TCP发来的TCP首部和TCP数据结合起来当作自己的数据,并加上IP首部。
- IP首部包含接收端IP地址及发送端IP地址,紧跟IP首部后面的还有TCP和UDP的信息。
- IP包生成后,参考路由控制表决定接受此IP包的路由或主机。随后将IP包发送给连接这些路由器或主机网络接口的驱动程序,实现真正的发送数据。
- 若不知道接收端MAC地址,可以利用ARP(Address Resolution Protocol)查找。只要知道对方MAC地址即可将MAC地址和IP地址交给以太网驱动程序,实现数据传输。
- 网络接口(以太网)的处理
- 以太网将IP发来的IP首部和IP数据结合起来当作自己的数据,并加上以太网首部。
- 以太网首部包括接收端MAC地址、发送端MAC地址以及标志以太网类型的以太网数据协议。上述信息产生的以太网数据包将通过物理层传输给接收端。
- 发送处理中的FCS(Frame Check Sequence)由硬件计算,添加到包的最后,设置FCS是为了判断数据包是否由于噪声而被破坏。
2.3.2.3 经过数据链路的包
经过数据链路的包流程如下
- 每个包首部至少包含两个信息:发送端和接收端地址、上一层的协议类型
- 每层协议分层式都必须有识别包发送端和接收端的信息
- 每个包首应包含一个识别位,用来识别上一层协议的种类信息
2.3.2.4 数据包接收处理
- 网络接口(以太网驱动)的处理
- 接收到以太网包后从以太网包首部找到MAC地址判断是否为发送给自己的包,如果不是则丢弃数据。
- 如果是自己要接受的数据,首先确定以太网协议传送过来的数据类型(本例中为IP),并将数据传送给处理IP的子程序
- IP模块的处理
- 接收到IP包首和数据,首先判断IP地址是否为自己的IP,如果不是则丢弃数据
- 如果与自己IP地址匹配则查找上一层的协议,如果是TCP则传送给TCP处理,如果是UDP则传送给UDP处理。
- 对于有路由表的情况,接收端往往不是自己的地址,此时需要借助路由控制表,在调查应送达的主机或路由器再发送
- TCP模块的处理
- 首先进行计算校验和,同时判断数据是否被损坏。然后检查是否按照序号进行接收数据,最后检查端口号,确定具体的应用。
- 数据接收完毕后,接收端需要发送一个“确认回执”给发送端,都则发送端会一直反复发送数据。
- 应用程序的处理
- B主机上的邮件处理系统解析邮件数据并显示内容。
3 数据链路
- 数据链路的段:指一个被分割的网络
- 网络拓扑:网络的连接和构成的形态称为网络拓扑。网络拓扑包括:总线型、环型、星型、网状型等
3.1 数据链路相关技术
3.1.1 MAC地址
- MAC地址用于识别数据链路中互联的节点。以太网或FDDI中,根据IEEE802.3使用MAC地址。
- MAC地址长48比特,结构如下。在使用网卡(NIC)的情况下,MAC地址会被烧入到ROM中,因此任何一个网卡的MAC地址都是唯一的。
3.1.2 共享介质型网络
共享介质型网络即多个设备使用一个通信介质的网络传输方式,此方式多采用半双工通信。共享介质型网络有两种介质访问控制方式:争用方式、令牌传递方式。
- 争用方式
- 争用方式指争夺获取数据传输的能力,也叫CSMA(载波监听多路访问)。这种方法通常令网络中的各个站采用先到先得的方式占用信道发送数据,如果多个站同时发送帧,则会产生冲突现象。也会导致网络拥堵和性能下降。
- CSMA/CD方式时CSMA的改良,一旦发生冲突,则尽早释放信道。具体工作原理如下:
- 如果载波信道上没有数据流动,则任何站都可以发送数据。
- 检查是否会发生冲突。一旦发生冲突时,放弃发送数据,立即释放载波信道。
- 放弃发送后,随机延时一段时间,在重新争用介质,重新发送帧。
- 令牌传递方式
- 令牌传递方式时沿着令牌环发送一种名为“令牌”的特殊报文。只有获得令牌的站才能发送数据。
- 优点:不会有冲突且每个站获得令牌的机会平等。所以即使发生网络拥堵也不会导致性能下降。
3.1.3 非共享介质型网络
非共享介质采取专用的一种传输控制方式,在此方式下。网络中的每个站直连交换机。由交换机转发数据帧。
- 优点:可以实现全双工通信,却不会发生冲突,可以实现高效的通信。同时可以构建虚拟局域网、进行流量控制等。
- 缺点:交换机一旦发生故障,与之相连的所有计算机之间将无法通信
3.1.4 全双工与半双工
- 半双工:只发送或接收的通信方式
- 全双工:同时进行发送和接收的通信方式
3.1.5 根据MAC地址进行转发
在使用同轴电缆的以太网等介质共享网络中,同一时间只能有一台主机发送数据,当主机数量增加时,需要交换机集线器提高性能。
- 转发表:以太网交换机根据数据层链路层汇总每个帧的目标MAC地址,决定从哪个网络接口发送数据所参考、用以记录发送接口的表。转发表的内容是自动生成的。
3.1.6 环路检测技术
当通过网桥连接网络时,如果网络的拓扑结构是一个环形,最坏的情况下会出现数据帧在环路中一而再再而三的持续转发。二一旦这种数据帧越积越多将会导致网络瘫痪。为解决这个问题,有生成树和源路两种方式。
3.1.6.1 生成树方式
- 该方法由IEEE802.1D定义。每个网桥必须在每1~10秒内相互交换BPDU包,从而判断哪些端口使用哪些不使用。
- 生成树法妻失和计算机和路由器的功能没有关系,但是只要有合适呢更成熟的功能就足以消除环路。
- 缺点:发合适呢更固执那个事切换网络往往需要几十秒的时间。在IEEE802.1W中定义RSTP方法能将该问题发生似的恢复时间缩短到几秒之内
3.1.6.2 源路由法
- 该方法将判断发送数据的源地址是哪一个网桥,并将帧写入RIF。网桥根据这个RIF信息发送帧给目标地址,因此即使出现环路数据帧不会被反复转发。
- 缺点:发送端本身必须具备源路由功能
3.2 PPP
PPP(Point-to-Point Protocol)点对点连接,即1对1连接计算机协议。PPP相当于位于OSI参考模型的第二层的数据链路层。
PPP不同于以太网和FDDI,它属于纯粹的数据链路层,与物理层没有关系
- PPPoE(PPP over Ethernet):在这种互联网接入服务中,通信线路由以太网模拟,单纯的以太网没有验证功能,也没有建立和断开连接的处理,因此无法按时计费,而PPPoE可以很好的管理终端的使用
3.3 其他数据链路
数据链路名称 | 介质传输速率 | 用途 |
---|---|---|
以太网 | 10Mbps~1000Gbps | LAN、MAN |
802.11 | 5.5Mbps~150Mbps | LAN |
Bluetooth | 上限2.1Mbps,下限177.1kbps | LAN |
ATM | 25Mbps、155Mbps、622Mbps、2.4Gbps | LAN~WAN |
POS | 51.84Mbps~约40Gbps | WAN |
FDDI | 100Mbps | LAN、MAN |
Token Ring | 4Mbps、16Mbps | LAN |
100VG-AnyLAN | 100Mbps | LAN |
光纤通道 | 133Mbps~4Gbps | SAN |
HIPPI | 800Mbps、1.6Gbps | 两台计算机之间的连接 |
IEEE1394 | 100Mbps~800Mbps | 面向家庭 |
4 IP协议
4.1 IP基础知识
IP(IPV4、IPV6)相当于OSI参考模型中的网络层。
IP大致分为三大作用模块,他们是IP寻址、路由(最终节点为止的转发)以及IP分包与组包。
IP地址是:连接到网络中的所有主机中识别出进行通信的目标地址
- 路由控制:路由控制是指将分组数据发送到最终目标地址的功能。
- 跳:指网络中的一个区间。IP包正是在网络中一个跳间被转发。因此IP路由也叫多跳路由。
- 路由控制表:为了将数据表发给目标主机,所欲主机都维护着一张路由控制表,该表记录ip数据在下一步应该发送给那个路由器。
- IP属于面向无连接型优点
- 简化连接
- 提速
4.2 IP地址基础知识
4.2.1 IP地址的定义
IPV4由32位正整数表示。由于人们并不习惯2禁止,所以将二进制IP地址转换为10进制数并以"."隔开。例如
10101100 | 00010100 | 00000001 | 00000001 |
---|---|---|---|
172. | 20. | 1. | 1 |
4.2.2 IP地址有网络和主机两部分标识组成
- 同一网段内的主机必须有相同的网络标识。
- 同一网段内主机标识不能一样
- 如何分辨网络标识和主机标识
- 以分类进行区分
- 以子网掩码(网络前缀)进行区分(常用)
4.2.3 IP地址的分类
IP地址分为四个级别ABCD。根据IP地址中第一位到第四位的比特咧对其网络标识和主机标识进行区分。
地址类型 | 网络地址范围 | 一个网段可以容纳主机地址上限 | 备注 |
---|---|---|---|
A类地址 | 0.0.0.0~127.0.0.0 | 16,777,214 | 后24位相当于主机地址 |
B类地址 | 128.0.0.0~191.255.0.0 | 65,534 | 后16位相当于主机地址 |
C类地址 | 192.0.0.0~223.255.255.0 | 254 | 后8位相当于主机地址 |
D类地址 | 224.0.0.0~239.255.255.255 | 没有主机地址,常被用于多播 | |
- 注意事项:用比特位表示主机地址是,不可以全部为0或全部为1。全部为0代表地址不可获知。全部为1的地址通常用作广播地址。
4.2.4 广播地址
广播地址多用于在用一个链路中相互连接的主机之间发送数据包。将IP地址中的主机地址部分全部设为1,即为广播地址。
- 本地广播:在本网络内的广播
- 直接广播:在不同网络之间的广播
4.2.5 IP多播
多播用于将包发送给特定组内的所有主机。由于直接使用IP协议,因此不存在可靠传输。
-
多播和广播的区别
- 广播将数据发送给所有终端主机。再由终端主机IP之上的一层去判断是否有必要的就收数据,是则接受,否则不接受。这极大降低了效率。因此多播折后再难过即可以穿透路由器,又可以实现只给那些必要的菹发送数据包的技术成为必选手段
-
IP多播与地址
多播使用D类地址。因此如果前四位是1110则是多播地址,剩下28位位多播的组编号。
-
注意事项:244.0.0.0到244.0.0.255的范围不需要路由控制,在同一个链路内能实现多播。二这个范围之外设置多播地址会给全网所有组内成员发送多播的包。在此范围之外设置多播地址会给全网所有组内成员发送多播的包。
4.2.5 子网掩码
在实际的网络中,一个链路不会多达65,534台计算机,如果直接使用A类或B类地址确实浪费。因此子网和子网掩码应运而生
- 子网与子网掩码:现在一个IP地址的网络标识和主机标识已不再受限于该地址的类别,而是有一个叫做“子网掩码”的识别码通过子网网络地址细分出比ABC类更小路堵的网络。这种方法实际上就是将原来ABC类的主机地址飞奔用作子网地址,可以讲源网络分为多个物理网络的一种机制。
- 引入子网后一个IP地址就有了两种识别码:IP地址本身和子网掩码。
- 子网掩码也是一个32位的数组。他对应IP地址网络标识部分的微全部为“1”,对应IP地址主机表示封部分则全部为“0”。同时子网掩码必须是IP地址的首位开始连续的“1”。
4.2.6 CIDR与VLSRM
-
CIDR(无类型域间选路)是一种采用任意长度分割IP地址的网络标识和主机标识。由于BGP(Border Gateway Protocol边界网关协议)对应了CIDR,说一不熟IP地址分类的自由分配。根据CIDR,连续多个C类地址可以划分到一个较大的网络内。有效利用了IPv4地址,同时通过路由几种降低了路由器的负担。
-
VLSM(可变长子码掩码)可以讲网络地址划分为主技术为500个时i王掩码长度为/23,主机数为50个时子网掩码长度为/26.从而将IP地址的利用路提高至50%。
4.2.7 私有地址和全局地址
私有IP地址最开始用于没有连接互联网的独立网络中的主机,只要保证在这个网络内地址唯一即可。私有网络的IP地址范围如下:
类别 | 地址 |
---|---|
A类 | 10.0.0.0~10.255.255.255 |
B类 | 172.16.0.0~172.31.255.255 |
C类 | 192.168.0.0~192.168.255.255 |
NAT技术诞生后,配有私有地址与配有全局地址的互联网主机实现了通信。现在部分大学企业在路由器和必要的服务器上采用全局IP,其他主机配有私有IP,需要与外界通信时,则通过NAT通信。
4.3 IPv6
- 为什么有IPv6?IPv6的出现为了解决IPv4地址耗尽的问题而被标准化的网际协议。IPv4的地址长度为32比特。IPv6的地址长度为128比特,一般写成8个16位字节。
4.3.1 IPv6特点
-
IP地址的扩大与录用控制表的聚合
IP地址仍然适用互联网的分层结构。分配与起地址结构相适应的IP地址,尽可能避免路由表膨大。
-
性能提升
包首部成都采用固定的值(40字节),不采用收不见掩码。简化首部结构,减轻路由器符合。路由去不再做分片处理。
-
支持即插即用
即使没有DHCP服务器也可以实现自动分配IP地址。
-
采用认证与加密功能
应对伪造IP地址的网络安全功能以及防止线路窃听的功能。
-
多播、Mobile IP成为扩展功能
4.3.2 IP地址标记方法
IPv6的地址长度为128为。所表示的数字为2^128个,如果使用时禁止数据表示,是十六个数字的序列。因此采用与IPv4不同的标记方法。
- 以每16比特为一组,用":"分割
- 连续出现多个0时可以省略,并用": :"隔开,但是只允许出此案一个两个连续的冒号。
例如:
二进制
000100001000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000100000000000:0010000000001100:0100000101111010
十六进制
1080:0:0:0:8:800:200C:417A
1080::8:800:200c:417A
4.3.3 全局单播地址
全局单播地址是世界上唯一一个地址,他是互联网通信以及各个域内不通信中最为常用的一个IPv6地址。
全局单播地址格式如下,先IPv6使用的格式为n=48,m=16以及128-m-n=64.即前64比特为网络标识,后64比特为主机标识。
## 5 IP 辅助技术
在实际的网络中,人们很少直接访问IP地址,而是通过域名来访问。同时在数据链路层也不使用IP地址。在以太网的情况下只使用MAC地址传输数据包。所以在实际应用中仅凭IP远远不够,还需要众多支持IP的相关技术才能实现通信,
5.1 DNS
我们平常访问网站是不适用IP地址,而是用罗马字和点好组成的字符串。而一般用户在使用TCP/IP进行通信时也不使用IP地址。这一切都是因为有了DNS功能的支持。
5.1.1 DNS产生
在应用中,当用户输入主机名(域名)是,DNS会自动检测注册了主机名和IP地址的数据库,并迅速定位对应IP地址。如果主机名和IP地址需要进行编程时,也只需要在组织机构能不进行申请即可,有了DNS,不论网络规模多么庞大,都能在一个叫小范围内通过DNS进行管理。
5.2 ARP
只要确定了IP地址,就可以向这个目标地址发送IP数据报。然而,在底层数据链路层,进行实际通信时却有必要了解每个IP地址对应的MAC地址
ARP(Address Resolution Protocol)是一种解决地址问题的协议。以目标IP地址为线索,用来定位下一个应该接受数据分包的网络设备对应的MAC地址。如果目标主机不在同一个数据链路上时,可以通过ARP查找下一跳路由器的MAC地址。
- 注意事项:ARP只适用于IPv4
5.2.1 ARP 工作机制
假设主机A和B想要通信。主机A要获得主机N的MAC地址,起初要通过广播发送一个包含B主机IP地址的ARP请求包,数据链路时所有主机和路由器都会进行解析,如果发现包中IP和自己IP地址一致,那么这个节点九江自己的MAc地址塞入ARP响应包返回给主机A。因此可以使用IP地址获取MAC地址实现通信。
5.2.2 IP地址和MAC地址缺一不可
为什么需要同时使用IP和MAC进行通信?假设主机A想要发送数据报给主机B时必须经过路由器C。即使知道主机B的MAC地址,由于路由器C会隔断两个网络,所以无法通信,必须先由主机A发送数据报给路由器C的MAC地址C1.此外,假定MAC地址就用广播地址,那么路由器D也会收到该广播信息。于是路由器D又将该信息转发给路由器C,导致数据报被发送两次。所以IP地址和MAC地址缺一不可。
5.2.3 RARP
RAPR是一种将ARP反过来,从MAC地址定位IP地址的一种协议,常被用于打印机服务器等小型嵌入式设备。
5.3 ICMP
主要功能:确认IP包是否成功送达目标地址、通过在发送过程中gIP包被废弃的具体原因、改善网络设置。
6 TCP与UDP
TCP和UDP是具有代表性的两个传输层协议,TCP提供可靠的通信传输,二UDP常被用于让广播和细节控制交给应用的通信传输。
6.1 传输层的作用
我们都知道在IP首部有一个协议字段,用来标识网络层(IP)的上一层所采用的是哪一种传输层协议(TCP/UDP)。同样传输层的TCP和UDO,为了识别自己所创书的数据部分究竟应该发送给那个应用,也设定了这样一个编号。
在TCP/IP通信中我们也需要指定接收的应用程序。而传输层必须指出这个具体的程序,为了实现这一功能,使用端口号这样一种识别码。根据端口号就可以识别在传输层上一层的应用层中所要进行处理的具体程序。
6.1.1 通信处理
前面提到的“应用程序”其实就是进行TCP/IP应用协议的处理。TCP/IP的众多应用协议大多数以客户端或服务端的形式运行。
这些服务端程序在UNIX中叫做守护进程。例如HTTP的服务端程序时httpd(HTTP守护进程),而SSh的服务端程序时sshd(SSH守护进程)。在UNIX中并不需要静这些守护进程逐个启动,而是启动一个可以代表他们就瘦客户端请求的inetd(互联网守护进程)服务程序即可。该守护进程收到客户端请求后会妇科新的进程并转换为sshd等各个守护进程。
确认一个请求究竟发送给的是哪个服务端,可以通过所受到数据包的目标端口号进行轻松识别,当收到TCP的建立连接请求时,如果目标端口为22,则转给sshd,如果是80则转给httpd。然后,这些守护进程会继续对该连接上的通信传输进行处理。
6.1.2 两种传输层协议TCP和UDP
-
**TCP:**TCP是面向有连接的、可靠的流协议。当应用程序采用TCP发送消息时,虽然可以保证发送的顺序,
- TCP为提供可靠性传输,实行“顺序控制”或“重发控制”机制。
- 具有“流控制(流量控制)”、“拥塞控制”、提高网络利用率等功能
-
**UDP:**是不具有可靠性的数据报协议,细微的处理他会交给上层的应用去完成。在UDP的情况下,虽然可以确保发送消息的大小,却不能保证消息一定会到达。
-
TCP和UDP使用场合区分:
- TCP用于为应用提供可靠传输
- UDP用于高速传输和实时性要求较高的通信或广播信息。多播、广播。
6.2 端口号(程序地址)
端口号是用来识别同一台计算机中进行通信的不同应用程序。
- TCP/IP或UDP/IP通信中采用5个信息识别一个通信:源IP地址、目标IP地址、协议号、源端口号、目标端口号。
6.2.1 确定端口号
-
既定标准的端口号 :
这种方法也叫静态方法。指每个程序都有其制定的端口号。但并不意味可以随便使用任意一个端口号。每个端口号都有其对应的使用目的。
例如HTTp、TELNET等应用协议所使用的端口号就是固定的,这些端口号也被称作知名端口号。
-
时序分配法:
时序分配法。此时服务端游必要确定监听端口号,但是接受服务的客户端没必要确定端口号。
在这种情况下,客户端应用程序可以完全不用自己设置端口号,而全权交给操作系统进行分配。操作系统可以为每个应用分配互不冲突的端口号。
6.2.2 端口号与协议
端口号尤其是用的传输层协议决定,因此,不同的传输协议可以使用享用的端口号。例如TCP/UDP使用同一个端口号,但使用目的各不相同。这是因为端口号上的处理是根据每个传输协议的不同而进行的。
6.3 UDP(User Datagram Protocol)
UDP不提供复杂的控制机制,利用IP提供妙香无连接的听信服务。并且它是将应用程序发来的数据在收到的那一刻按照原样发送到网络上的一种机制。即使出现网络拥堵,也无法控制流量等行为。此外如果出现丢包UDP也不负责重发,也没有纠正顺序的功能。
UDP面向无连接,可以随时发送数据,本身的处理简单高效,所以常用于以下几个方面:
- 包总量较少的通信(DNS、SNMP等)
- 视频、音频等多媒体通信(即时通信)
- 限定于LAN等特定网络中的应用听信
- 广播通信(广播、多播)
6.4 TCP(Transmission Control Protocol)
TCP充分实现了数据传输时各种控制功能,可以进行丢包时的重发控制,可以对次序乱掉的分包进行顺序控制。同时作为面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。
TCP通过检验和、序列号、确认应答、重发控制、连接管理、窗口控制等机制实现可靠性传输。
6.4.1 通过序列号与确认应答提高可靠性
- 确认应答ACK(Positive Acknowledgement):当发送端的数据到达接收主机时,接收端主机会返回一个已收到消息的通知,即为确认应答。
- TCP通过确认应答实现可靠的数据传输,当发送端发送数据后会等待对端的确认应答,如果没有收到确认应答,发送端即认为数据丢失,则会进行重发。
- 在实际情况下,可能存在对端已经接收到数据,但是确认应答在返回的过程中丢失的情况,因为发送端没有接收到确认应答,则会重发数据,但是这对于接收端来说是一种灾难,他会反复收到相同的数据。为此需要引入一种能够识别是否已经接收数据,又能判断是否需要接收的机制:序列号
- 序列号是按照顺序给发送数据的每一个字节都标上号码的编号。接收端查询接收数据TCP首部的序列号和数据的长度,将自己下一步应该接受的序号作为确认应答返回,这样通过序列号和确认应答好,TCP可以实现可靠传输。
6.4.2 确定重发超时
- 重发超时:在重发数据之前,等待确认应答到来的那个特定时间间隔。
理想状态下是找到一个一定能在这个时间内返回的最小时间,但由于TCP要求无论在何种网络下都要提供高性能通信,但是不同网络
的返回时间不同。所以在每次发包是都会计算往返时间及其偏差。将往返时间和偏差想家,吃昂发超市的时间就是比这个总和稍大一点的值
6.4.3 连接管理
TCP会在发送数据之前,tonguoTCP首部发送一个SYN包作为建立连接的请求等待确认应答。如果对端发来确认应答,则认为可以进行数据通信。如果对端的确认应答未能到达,就不会进行数据通信。此外,在通信就舒适会进行断开连接的处理(FIN包)。
6.4.3.1 TCP以段为单位发送数据
在建立TCP连接的同时,也可以确定发送数据包的单位,我们也可以称其为“最大消息长度MMS”(Maximun Segment Size)。理想状态下最大消息长度是IP中不会被分片处理的最大数据长度。TCP传送数据时是一MSS的大小将数据进行分割发送。尽享重发是以恶是一MSS为单位。
MSS在三次握手的时候,在两端主机之间北极酸的出。两端的主机在发出建立连接的请求时,会在TCP首部中写入MMS选项,高速对方自己的接口能够适应的MSS的大小,然后再两者之间选择一个较小的值投入使用。
6.4.3.2 利用窗口控制提高速度
TCP以一个段为单位发送数据,每发一个段进行一次确认应答处理。这会导致因为包的往返时间较长导致通信性能低下。所以引入窗口的概念。
确认应答不再以段为单位,而是以更大的单位进行确认,发送端主机可以同时发送多个段,然后等待多个段的确认应答。
- 窗口大小:无需等待确认应答可以发送数据的最大值,如4个段。
- 滑动窗口控制:在收到确认应答的情况下,将窗口滑动到确认应答中的序列号的位置
6.4.3.3 窗口控制与重发控制
- 高速重发控制:在接收端没有接收到自己所期望序号的数据时,会对之前收到的数据进行确认应答。发送端一番收到某个确认应答后,又连续三次收到同样的确认应答,则认为下一数据段已丢失,需要进行重发。
6.4.4 流控制
发送端根据自己实际情况发送数据,但是,接收端可能收到一个毫无关系的数据包或者在处理其他问题上花费时间,甚至高负荷状态下无法接受任何数据,如此一来,如果接收端将本应该接受的数据丢弃又会触发重发机制,导致网络流量的浪费。流控制就是为了解决这种问题。
- 流控制:接收端向发送端主机通知自己可以接收数据的大小,发送都安徽发送不超过这个限度的数据。该大小称为窗口大小。
6.4.5 拥塞控制
为防止突然发送一个较大数据导致网络拥堵或者瘫痪,在通信一开始时就会通过一个叫做慢启动的算法得出数值,对发送的数据量进行控制