TCP/IP协议原理
一、TCP/IP协议简介及起源
起初,计算机只广泛应用于单机模式(独立模式)。随着发展,计算机逐一连接,形成计算机网络,实现信息共享、远程信息传输等工作。根据规模,计算机网络可分为两类:
WAN:Wide Area Network(广域网)
LAN:Local Area Nerwork(局域网)
异构计算机连接和电子邮件、万维网络等信息传播方式促使互联网从大到小开始普及到整个公司到一个家庭,通过接入互联网实现了世界各地用户的即时沟通。
在计算机通信诞生之初,系统化和标准化并没有得到重视。不同的制造商只生产自己的网络来实现通信,这给用户使用计算机网络造成了巨大的障碍,缺乏灵活性和可扩展性。要解决这个问题,ISO(国际标准化组织)制定国际标准OSI(开放式通信系统互联参考模型)。TCP/IP并非ISO指定,是由IETF(国际互联网工程任务组)建议并致力于促进标准化的协议,其中大学等研究机构和计算机行业是促进标准化的核心力量,已成为行业标准协议。
本标准协议是计算机通过网络实现通信时事先达成的协议;这种协议使不同制造商的设备和不同的设备CPU只要遵循相同的协议,由不同操作系统组成的计算机就可以实现通信。协议可分为多种类型,每种协议都明确定义了其行为准则:两台计算机必须能够支持相同的协议,并遵循相同的协议来实现相互通信。
互联网上常用的代表性协议有IP、TCP、HTTP等,LAN中常用协议有IPX、SPX等等。计算机网络系统结构系统总结了这些网络协议,TCP/IP这这些协议的集合。
1、TCP/IP的定义
TCP/IP是TransmissionControlProtocol /InternetProtocol缩写(传输控制协议/互联网协议)。TCP和IP只有两个协议,也是两个非常重要的协议,所以使用TCP/IP事实上,它还包括其他协议来命名这个互联网协议家,比如UDP、ICMP、IGMP、ARP/RARP等等。传输控制协议:用于处理任何长信息的可靠传输。除其他能力外,互联网协议还用于管理从发送方到接收方的网络传输路由。
总之:TCP/IP协议族是一组协议的集合,也称为,。
2、TCP/IP起源与历史
TCP/IP可以追溯到1969年,美国国防部下属的一个秘密机构被称为ARPA(Advanced Research Projects Agency,高级研究计划部署)资助了一项特殊类型的长距离网络学术研究,称为分组交换网络,建立了著名的网络ARPANET。ARPANET它是最早出现的计算机网络之一。现代计算机网络的许多概念和方法来自ARPANET。实现异种网之间的互联(Interconnection)与互通(Intercommunication),ARPA不断鼓励在ARPANET研发分组交换技术。1977年至1979年至1979年推出TCP/IP系统结构和协议规范。
1983年,国防部通信局现称国防部信息统计局ARPA手中接管了ARPANET操作。美国国防部随后要求Internet所有的计算机都从以前混乱的协议切换到TCP/IP上去。也是同年,UNIX(4.2BSD版本)植入正确的操作系统TCP/IP的支持。
1986年,国家科学基金会建立了长距离、高速网络,称为NSFNET(一是56kb/s网络主干道,比今天的调制解调器快一点),NSF还定制了一组策略,称为合理使用策略AUP(Acceptable Use Policies),它说明了如何使用Internet。
1989年,Internet主机数量超过1万台,NSFNET主干网升级到T1速,每秒1.544M位(Mb/s)。
麦吉尔大学于1990年发布TCP/IP的Arichie它支持协议和服务Internet基于文本的任何位置和类型的文档归档,特别是FTP网站上的内容。
商业互联网交互成立于1991年。
1992年,国际互联网协会(ISOC)成立。Internet主机数量超过100万。NSFNET主干网升级到T3速度,为44.736Mb/s。CERN公开发布HTTP和Web服务器技术(Web诞生)。
1995年,Netscape创建了Netscape Navigator,并启动了Web的商业化。
1996年,微软6年IE浏览器。
2000年-2001年,情书(Love Letter)蠕虫感染了数百万台感染计算机,Sircam病毒和红色代码(Code Red)感染了数千台Web服务器和数千个电子邮件账户。
直到今天,新的服务协议不断出现Internet上,但TCP/IP依然蓬勃强劲。
3、OSI网络参考模型
国际标准化组织开发系统互联网络参考模型,有时候也称ISO/OSI网络参考模型,又称七层模型。其目标是建立一个新的、改进的、专门设计的协议套件来取代它TCP/IP。然而,它并没有被广泛使用,但它已经成为讨论网络组合和解释网络如何运行的标准方法。
3.1、物理层
3.二、数据链路层
3.3、网络层
发送者如何知道接收者?MAC地址?如何知道接受者是否属于与自己相同的子网络?如何发送不再相同的子网络?为了解决这些问题,网络层分别引入了三个协议、、
数据链路层中使用的物理地址(如MAC地址)只解决网络内部的问题问题。在不同子网之间通信时,为了识别和找到网络中的设备,每个子网中的设备将分配一个唯一的地址。由于子网使用的物理技术可能不同,该地址应为逻辑地址(如IP地址)。因此,网络层被引入P协议,制定了一套新地址,使得我们能够区分两台主机是否同属一个网络,这套地址就是网络地址,也就是所谓的
IP地址目前有两个版本,分别是和,IPv4是一个32位的地址,常采用4个十进制数字表示。IP协议将这个32位的地址分为两部分,前面部分代表网络地址,后面部分表示该主机在局域网中的地址。
地址解析协议,是根据获取的一个网络层协议。
ARP首先会发起一个请求数据包,数据包的首部包含了目标主机的IP地址,然后这个数据包会在链路层进行再次包装,生成最终由以太网广播给子网内的所有主机,每一台主机都会接收到这个数据包,并取出标头里的IP地址,然后和自己的IP地址进行比较,如果相同就返回自己的MAC地址,如果不同就丢弃该数据包。
,因此网络层引入了路由协议,首先通过IP协议来判断两台主机是否在同一个子网中,如果在同一个子网,就通过ARP协议查询对应的MAC地址,然后以广播的形式向该子网内的主机发送数据包;如果不在同一个子网,以太网会将该数据包转发给本子网的进行路由。网关是互联网上子网与子网之间的桥梁,所以网关会进行多次转发,最终将该数据包转发到目标IP所在的子网中,然后再通过ARP获取目标机MAC,最终也是通过广播形式将数据包发送给接收方。
网络层的主要工作是:
3.4、传输层
链路层定义了主机的身份,即MAC地址, 而网络层定义了IP地址,明确了主机所在的网段,有了这两个地址,数据包就从可以从一个主机发送到另一台主机。而每台电脑都有可能同时运行着很多个应用程序,所以当数据包被发送到主机上以后,是无法确定哪个应用程序要接收这个包。
因此传输层引入了来解决这个问题,为了给每个应用程序标识身份,UDP协议定义了,同一个主机上的每个应用程序都需要指定唯一的端口号,并且规定网络中传输的数据包必须加上端口信息。 这样,当数据包到达主机以后,就可以根据端口号找到对应的应用程序了。
UDP协议比较简单,实现容易,但它没有确认机制, 数据包一旦发出,无法知道对方是否收到,因此可靠性较差,为了解决这个问题,提高网络可靠性,就诞生了,TCP即传输控制协议,是一种面向连接的、可靠的、基于字节流的通信协议。简单来说每发出一个数据包都要求确认,如果有一个数据包丢失,就收不到确认,发送方就必须重发这个数据包。
为了保证传输的可靠性,TCP 协议在 UDP 基础之上建立了的确认机制,也就是说,在正式收发数据前,必须和对方建立可靠的连接。
传输层的主要工作是:,端口号既是这里的“端”(),。
3.5、会话层
会话层就是负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
主要任务是:向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。
3.6、表示层
表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的转换功能之一。
3.7、应用层
有了上诉基层协议,数据已经可以从一个主机上的应用程序传输到另一台主机的应用程序了,但此时传过来的数据是字节流,不能很好的被程序识别,操作性差。因此,应用层定义了各种各样的协议来规范数据格式,常见的有 HTTP,HTTPS,FTP,POP3、SMTP等。
4、TCP/IP网络模型
TCP/IP四层模型如下:
OSI七层模型 | TCP/IP四层模型 | 对应网络协议 |
应用层(Appliation) | 应用层 | HTTP、TFTP、FTP、NFS、WAIS、SMTP、POP3 |
表示层(Presentation) | Telnet、Rlogin、SNMP、Gopher | |
会话层(Session) | SMTP、DNS | |
传输层(Transport) | 传输层 | TCP、UDP |
网络层(Network) | 网络层 | IP、ICMP、ARP、RARP、AKP、UUCP、BOOTP(DHCP)、RIP、BGP |
数据链路层(Data Link) | 网络接口层(网络访问层) | PPP(PPPoE) 、SLIP、Ethernet、FDDI、Arpanet、PDN |
物理层(Physical) | IEEE 802.1-互联网络 802.2-逻辑链路/媒体访问控制 802.3- 多路访问 802.5-令牌环 802.11-Wi-Fi |
4.1、网络接口层
用于协作IP数据在已有网络介质上传输的协议。实际上TCP/IP标准并不定义与ISO数据链路层和物理层相对应的功能。它提供TCP/IP协议的数据结构和实际物理硬件之间的接口。
IEEE 802规范定义了网卡如何访问传输介质(如光缆、双绞线、无线等),以及如何在传输介质上传输数据的方法,还定义了传输信息的网络设备之间连接建立、维护和拆除的途径。遵循IEEE 802标准的产品包括网卡、桥接器、路由器以及其他一些用来建立局域网络的组件。
1)802.1-互联网络:给出了整个802系列中互联网络如何工作的描述;
2)802.2-逻辑链路/媒体访问控制:设备之间建立和管理逻辑链路的描述和媒体接口访问的描述;
3)802.11-Wi-Fi:无线数据包无限组网标准。
4)PPP协议:常见的变体为PPPoE,以太网上的PPP,是一种串行线路协议。
4.2、网络层
本层包含IP协议、RIP协议(Routing Information Protocol,路由信息协议),负责数据的分片、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来提供网络诊断信息。
在网络层,有以下重要协议:
1)IP(网际协议):将数据包从发送方路由传输到接收方。
2)ICMP(控制消息协议):处理基于IP路由和网络行为的消息。
3)ARP(地址解析协议):在特定的电缆网段上将数字IP网络地址转换为媒体访问控制(MAC)地址。
4)RARP(反向地址解析协议):将MAC地址转换成数字IP地址。
5)BOOTP(引导协议):是动态主机配置协议(DHCP)的前导协议,DHCP管理网络IP地址分配和其他IP配置数据,BOOTP支持网络设备从网络上获取引导和配置数据。
6)RIP(路由信息协议)、BGP(边界网关协议)
4.3、传输层
传输层有时候也称为主机到主机层,提供两种端到端的通信服务。
1)TCP协议(Transmission Control Protocol)提供可靠的数据流运输服务。
2)UDP协议(Use Datagram Protocol)提供不可靠的用户数据报服务。
4.4、应用层
应用层对应于OSI参考模型的应用层、表示层、会话层,为用户提供所需要的各种服务,例如:HTTP、TFTP、FTP、NFS、SMTP等。应用层是协议栈与主机上应用程序或进程接口的地方,因此,也被称为处理层。TCP/IP服务的运行依赖于下面两个要素:
1)守护程序(侦听进程):处理特定服务的入栈用户请求。
2)端口地址:用于识别特定的进程和服务。端口地址使用16位数表示(2的16次方,也就是说一个主机最多有65535个端口)。在范围0-1024之间的端口地址经常被称为公认端口地址。如:FTP的公认端口为21。
常见的协议:
1)这是一种最基本的客户机/服务器的访问协议;浏览器向服务器发送请求,而服务器回应相应的网页。
2)客户服务器模式,使用UDP数据报,只支持文件传输,不支持交互,TFTP代码占内存小 。
3):提供交互式的访问,基于客户服务器模式,面向连接 使用TCP可靠的运输服务,减少/消除不同操作系统下文件的不兼容性 。
4):Client/Server模式,面向连接 ,基本功能:写信、传送、报告传送情况、显示信件、接收方处理信件。
二、IP简介
1、IP定义
21世纪关于网络,人们最长听见的用词之一便是:IP地址!
关于IP的定义:是Internet Protocol的缩写,指TCP/IP网络体系中的网际互联协议。IP协议规定了所有连接到互联网中的设备都必须拥有自己唯一的“身份号”—IP地址,网络设备间进行信息交互时,必须在数据报文中设定目标设备的IP地址方能将数据准确传输至目标设备,好比快递必须填写收件人地址,快递员方能根据收件人地址将快递顺利送至收件人处。互联网中的一台网络设备可以拥有多个IP地址,但一个IP地址只能对应一台网络设备,即IP地址具有唯一性。
IP地址是一串数字,遵循国际编写规范,共由32位二进制数字0/1组成。当以十进制数字表达时,数字IP地址使用点分割十进制表示法,采用格式n.n.n.n,每8位为一组,用标准的IP术语来说称为八位元组(每个字段最大值是255)。如192.168.0.0,即地址格式为: 。地址总容量近43亿个(2^32=4294967296)。然而随着互联网的发展以及全世界庞大的人口数量,IPv4地址远远不够用。因此,诞生了IPv6,IPv6地址采用128位标识,数量为2的128次方,相当于IPv4地址空间的4次幂。本文介绍的IP为IPv4。
最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID)即和IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。
2.1、IP地址分类简介
类别 | 最大网络数 | 最大主机数 | 地址范围 | 适用规模 | 私有地址 |
A类 | 126(2^7-2) | 16777214(2^24-2) | 1.0.0.0~126.0.0.0 | 大型 | 10.0.0.0-10.255.255.255 |
B类 | 16382(2^14-2) | 65534(2^16-2) | 128.0.0.0~191.255.0.0 | 中型 | 172.16.0.0~172.31.255.255 |
C类 | 2097150(2^21-2) | 254(2^8-2) | 192.0.1.0~223.255.255.255 | 小型 | 192.168.0.0~192.168.255.255 |
1)A类地址
A类地址总是采用如下二进制格式:0bbbbbbb,hhhhhhhh,hhhhhhhh,hhhhhhhh
A类IP=第一个字节作为网络地址,后三个字节作为主机地址
网络地址的前导数字总是0,其他位置可以是0也可以是1,这样其网络地址最多的可能有:2^7=128种,其范围为(00000000~01111111,即0-127),其地址范围为:0.0.0.0到127.255.255.255,但是在任何IP网络上,网络号全是0和1的地址用保留用于专用目的,不能作为网络地址,其中0代表任何地址,127段为回环测试地址。所以A类地址的最大网络数为2^7-2=126.(1.0.0.0到126.0.0.0),而RFC1918中规定网络10.0.0.0是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址),主机号全0表示所在网络的网络号,全1表示广播地址,因此每个网络能容纳16777214个主机(224-2=16777216-2=16777214)。
2)B类地址
B类地址总是采用如下二进制格式:10bbbbbb,bbbbbbbb,hhhhhhhh,hhhhhhhh
B类IP=前两个字节作为网络地址,后两个字节作为主机地址
网络地址的前导数字总是10,其他位置可以是0也可以是1,前两个字节作为网络号,这样其网络地址最多的可能有:2^14=16382种,因此最大可用网络地址数量为2^14-2(总是要减去全是0和全是1的两个地址),而RFC1918中规定172.16.0.0~172.31.255.255的16个B类网络地址是私有地址。
3)C类地址
C类地址总是采用如下二进制格式:110bbbbb,bbbbbbbb,bbbbbbbb,hhhhhhhh
C类IP=前三个字节作为网络地址,最后一个字节作为主机地址
网络地址的前导数字总是110,其他位置可以是0也可以是1,前两个字节作为网络号,这样其网络地址最多的可能有:2^21=2097152种,因此最大可用网络地址数量为2^21-2(总是要减去全是0和全是1的两个地址),而RFC1918中规定192.168.0.0~192.168.255.255的256个C类网络地址是私有地址。
4)D类地址
D类地址主要用于多点广播(Multicast)的地址,并不指向特定的网络。D类IP地址第一个字节以1110开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机(同时向同一子网所有主机发送报文),它标识共享同一协议的一组计算机。224.0.0.0~239.255.255.255用于多点广播。
5)E类地址
E类IP地址以11110开始,为将来使用保留。主要用于Internet试验和开发,地址范围为240.0.0.0~255.255.255.254,255.255.255.255用于广播地址。
3、子网与子网掩码
在了解子网掩码之前我们有必要先了解一下子网,为什么会出现子网,子网是什么?
就是将的几位用来做网络地址来将网络划分为若干个子网,便于管理还能减少IP的浪费。
子网的出现是基于以下原因:
- 随着互联的发展IPV4地址资源可能会耗尽,如果不划分子网直接将一个C类地址分给一个企业,C类地址可容纳256台主机,但是可能该企业只有20台计算机,这就造成极大浪费
- 隔离数据在整个网络内广播,提高信息传输速率如:C类广播到256台和广播到20台效率显而易见。
又叫网络掩码,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,必须配合IP使用
通过子网掩码计算出一台主机所在的子网和其他网络的关系,进行正确的通信(网络地址相同,表明接受方在本网络上,那么可以把数据包直接发送到目标主机,否则就需要路由网关将数据包转发送到目的地)
但是为了方便记忆和美观,IP地址通常是将每8位二进制数转化为十进制来表示,中间用'.'分隔,如255.255.255.0
步骤:a)将子网数目转化为二进制来表示;b) 取得该二进制的位数N;c)取得该IP地址的类子网掩码,将其主机地址部分的的前N位置为1,即得出该IP地址划分子网的子网掩码。
例如:将C类地址,192.168.10.0 划分成4个子网
a)4的二进制表示:4=100,该二进制的位数为N=3(这里的3为,表示为最接近子网数的二次幂,子网数+2=6,最接近的2^3=8)
IP:11000000 10101000 00001010 00000000(主机位)
子网掩码:11111111 11111111 11111111 11100000 (将主机位自顶向下保留(窃入)N位) ==》
192.168.10.0 划分成4个子网,大致可以这么分,我们可以在中间6个组中选四个:
000 00000 建议不使用,但也并不是不能使用
001 00000 网络号:192.168.10.32 主机范围起始地址:192.168.10.33 (32+1)主机范围结束地址:192.168.10.62 (64-2)
010 00000 网络号:192.168.10.64 主机范围起始地址:192.168.10.65 主机范围结束地址:192.168.10.94
011 00000 网络号:192.168.10.96 主机范围起始地址:192.168.10.97 主机范围结束地址:192.168.10.126
100 00000 网络号:192.168.10.128 主机范围起始地址:192.168.10.129 主机范围结束地址:192.168.10.158
101 00000 网络号:192.168.10.160
110 00000 网络号:192.168.10.192
111 00000 建议不使用,但也并不是不能使用
将主机数目转化为二进制来表示;b)取得该主机的二进制位数,为N(如果主机数小于或等于254(注意去掉保留的两个IP地址),则这里肯定 N<8,如果大于254,则 N>8);c)使用255.255.255.255来将该类IP地址的主机地址位数全部置1,然后从后向前的将N位全部置为 0,即为子网掩码值。
例如:欲将B类IP地址168.195.0.0划分成若干子网,每个子网内有主机700台。(大于254)
a)700的二进制:700=1010111100,该二进制的位数为N=10
将该B类地址的子网掩码255.255.0.0的主机地址全部置为1,得到255.255.255.255,然后再从后向前将后10位置0,即为:11111111.11111111.11111100 00000000,即255.255.252.0为子网掩码值。
等分成8份,2^3,至少要三位的二进制,即需要将子网掩码右移3位,可得出子网掩码为:255.255.255.224
将180台机器,按100、50、20、10分。子网掩码分别是多少?
按1/2分(100台),只需要右移1位,子网掩码:255.255.255.128(可用地址1-126)
按1/4分(50台),右移2位,子网掩码:255.255.255.192(可用地址129-190)
按1/8分(20台),右移3位,子网掩码:255.255.255.224(可用地址193-222)
按1/16分(10台):右移4位,子网掩码:255.255.255.240(可用地址225-238)
解答:与7最近的2^x是8(2^3),而此时只能有6个子网可以分配(一个用于网络一个用于广播,所以需要减去2,一般最小地址作为网络地址,最大地址作为广播地址),不能满足 7个子网的需求,所只能取16(2^4),256-16=240,所以子网掩码为 255.255.255.240
解答:将子网掩码转换成二进制表示11111111.11100000.00000000.00000000,统计一下它的网络位共有11位,A类地址网络位的基础数是8,二者之间的位数差是3,最大有效子网数就是2的3次方,即最多可以划分8个子网络。
解答:将子网掩码转换成二进制表示11111111.11111100.00000000.00000000,统计一下它的主机位共有18位,最大可用主机数就是2的18次方减2(除去全是0的网络地址和全是1广播地址),即每个子网络最多有262142台主机可用。
ip地址:192.168.1.1 子网掩码:255.255.255.0 , ip地址:192.168.1.2 子网掩码:255.255.255.0
我们可以直接的判断,他们是同属于一个网段的ip地址。
ip地址:192.168.1.1 子网掩码:255.255.255.0 ,ip地址:192.168.1.2 子网掩码:255.255.0.0
这两个ip地址虽然在不看掩码的情况下,比较像,但他们并不是同一个网段内的。这个可以从子网掩码来判断:将IP地址和子网掩码做与位运算:
192.168.1.1的二进制: 11000000 10101000 00000001 00000001
255.255.255.0的二进制: 11111111 11111111 11111111 00000000
与位得出结果(192.168.1.0):11000000 10101000 00000001 00000000
192.168.1.1 255.255.255.0是属于192.168.1.0网段的。
而192.168.1.2 255.255.0.0是属于192.168.0.0网段。
也许我们常常会见到这种写法:192.168.10.32/28,其中用28位表示网络ID。
CIDR( Classless Inter-Domain Routing ,无类域间路由选择),它是ISP( Intemet Service Provider ,因特网服务提供商)用来将大量地址分配给客户的一种方法。ISP 以特定大小的块提供地址。从ISP那里获得的地址块类似于192.168.10.32/28,这指出了子网掩码。,显然最大为/32 ,因为一个字节为8 位,而IP 地址长4B (4 x 8=32)。注意,最大的子网掩码为/32 (不管是哪类地址)。
例如:
255.0.0.0 /8 255.255.0.0 /16 255.255.255.0 /24 255.255.255.192 /26 255.255.255.224 /27 255.255.255.240 /28 255.255.255.248 /29 255.255.255.252 /30 255.255.255.254 /31 255.255.255.255 /32
超网是与子网类似的概念,IP地址根据子网掩码被分为独立的网络地址和主机地址。但是,与子网把大网络分成若干小网络相反,它是把一些小网络组合成一个大网络,即超网。 假设现在有2个C类网络,从192.168.0.0到192.168.1.0,它们可以用子网掩码255.255.254.0统一表示为网络192.168.0.0。但是,并不是任意的地址组都可以这样做,例如2个C类网络192.168.1.0到192.168.2.0就不能形成一个统一的网络。
192.168.00000000 00000000
192.168.00000001 00000000
255.255.11111110 00000000
合并成超网是往左移,与运算得出的网络号相同。
扩展:网关
按照不同的分类标准,网关也有很多种。TCP/IP协议里的网关是最常用的,在这里我们所讲的“网关”均指TCP/IP协议下的网关。
在配置网络的时候经常看到这几个参数,那么网关是什么呢? :
IP地址是以网络号和主机号来表示网络上的主机的,只有在一个网络号下的计算机之间才能“直接”互通(同一网段的子网内的主机之间通信是不需要经过网关的,发送的是广播报文),子网掩码的作用就是用来判断任意两个IP地址是否属于同一子网络,这时只有在同一子网的计算机才能"直接"互通。网关既可以用于广域网互连,也可以用于局域网互连。
1984年12月,思科系统公司(Cisco Systems, Inc.)在美国成立,创始人是斯坦福大学的一对教师夫妇:计算机系的计算机中心主任莱昂纳德·波萨克(Leonard Bosack)和商学院的计算机中心主任桑蒂·勒纳(Sandy Lerner),夫妇二人设计了叫做“多协议路由器”的联网设备,用于斯坦福校园网络(SUNet),将校园内不兼容的计算机局域网整合在一起,形成一个统一的网络。思科因为路由器发展成全球最大的公司之一。故事看到这里,网关的作用就已经清晰了,就是帮助两个不能直接互通的网络,进行数据转发的。
网关是逻辑概念,路由器是物理设备,路由器(路由器在LAN的IP地址)可以作为网关来使用。路由器是一个设备,而网关是一个结点(概念层)。应该说:路由器可以实现网关的功能,把家庭局域网和互联网相连。另外,网关的功能还可以由局域网中一台双网卡的机器(其中一块网卡接入广域网)来实现。手机可以做网关,手机开了热点,笔记本接进来,手机作为网关把笔记本和互联网相连。
我们平时的家用路由器实际上是路由器+交换机(一个WAN口+若干个LAN口)一个wan口用来连接外网,其他的几个LAN口实质上就是一个交换机。WAN是英文Wide Area Network的首字母所写,即代表广域网;而LAN则是Local Area Network的所写,即本地(或叫局域网)。宽带路由器的路由功能就体现在wan口IP地址和lan口IP地址之间的数据路由上,通常我们根据网络运营商所提供的接入方式来设置WAN口的网络参数,通常有静态IP地址、动态IP地址或PPPOE等方式,它与网络运营商的接入设备处于同一个外网。而将LAN口的IP地址则设置为本地局域网内的IP地址,通常是我们自己可以在宽带路由器上自行设定的IP地址,LAN口下所连接的计算机组成一个“本地网”,路由器的LAN口IP地址是这个网络的网关。家庭内部网络的机器都是接lan口,通过lan口向外部网络发送数据包,首先发送一个请求到默认网关,路由器在分析下面发送来的数据包后,检查数据包中的内网IP地址时会检查设备本身的NAT地址转换表。在找到相应条目后,把源地址也就是本来的内网IP地址换成wan口的IP地址,目的地址不变,发送到外网上去。外部网络接受到数据包后,会解析出数据包中的路由器wan口IP地址,将响应数据包返回到这个wan口IP地址,发送回路由器。路由器将这个返回数据包中目的地址(wan口IP)NAT转换为内网IP,最终共完成整个数据包的发送和接受。
linux路由表主要字段说明
目的地,终点,就是我们要去访问的目的IP,可以是主机地址、网络地址,常用的是网络地址 | 网关地址,所有未知地址都会找网关,有网关统一转发,只有边缘网络才会配置网关,并且直连网络不需要配置网关 | 目的地址的子网掩码 | U——该路由可以使用,G——该路由是到一个网关,如果没有该标志,说明目的地是直连的,H——该路由是到一个主机,D——该路由是由重定向报文创建的,M——该路由已被重定向报文修改,标志G很重要,它区分了间接路由和直接路由 | 优先级(数字越大优先级越低) | 路由项引用次数(linux 内核中没有使用) | 此路由项被路由软件查找的次数 | 接口,去往目的地址的网络路径的出口 |
意思就是去往所有目标地址(#0.0.0.0代表的是匹配所有目标地址)数据包由网关192.168.170.2 通过网卡ens33来转发; Flags那一列中如果标志是 U,则说明是可达路由(活动的);如果是有 G,则说明这个网络接口连接的是网关,H则说明目标是一个主机。
意思是主机所在网络的地址为192.168.170.0,若数据传送目标是在本局域网内通信,则可直接通过eth0转发数据包;
案例:
PC | 网关 | 子网掩码 | 网段 |
小明(10.1.1.2/24) | 10.1.1.1/24 | 255.255.255.0 | 10.1.1.0 |
小美(10.1.1.3/24) | 10.1.1.1/24 | 255.255.255.0 | 10.1.1.0 |
小丽(10.1.2.2/24) | 10.1.2.1/24 | 255.255.255.0 | 10.1.2.0 |
从上表我们大概可以看到,小明和小美是处在同一个局域网内的,而小丽和他们都不在一个局域网内,那么肯定就会有两种情况发生,一种是统一局域网之间的通信,还有一种情况就是不同局域网之间的通信。
小明和小美之间通信,其实就相当于小明主机ping10.1.1.3。下面我们来分析一下ping的这个流程。
1)小明利用自身的子网掩码和小美的ip地址进行&运算,得到小美的网段号。然后小明发现自己和小美处在同一个网络中。 2)检查自身的arp缓存
当IP层的ARP高速缓存表中存在目的IP对应的MAC地址时:直接封装这个ping包并发送给小美 当IP层的ARP高速缓存表中不存在目的IP对应的MAC地址时:小明按照路由表中的默认接口ETH0发送广播给整个局域网,局域网内的每台主机都收到了这个信息,其他主机都无反应,但是小美这台主机10.1.1.3意识到这是在叫自己。然后采取点对点单播回复小明:我在这里,我的mac地址是xxxx.以后你可以用这个联系方式联系我。小明收到此回复后,保存到自己的通讯录中(arp缓存中),方便下次联系。然后通过刚才记录的小红的mac地址发送ping包,依照类似的步骤,很快小红发出了回信。小明主机收到ping包的返回内容。
小明和小丽之间的通讯
1)小明将自己的子网掩码和小丽的ip进行&运算,发现二人不在同一个网络内。小明无法直接通讯。
2)既然无法直接通信,小明就想有没有别的道路能够到达小丽。于是他查看了自己的路由表,信息如下:
路由表内并没有小丽的Ip信息。走投无路的小明决定走0.0.0.0这条路,0.0.0.0是默认路由,它的终点站是默认网关。
3)小明将网关的ip进行了第一步的操作,发现他们是在同一个网络中,于是利用arp协议小明得到了默认网关的mac地址,
网关ip层查看这个ping包,去路由表里尝试能否匹配到小丽的ip,下面是默认网关的路由表信息
刚好路由表里的第二条匹配到了小丽的网段号,到达下一条的方式是广播,所以网关开始发送ARP广播,并得到了小丽的mac地址,于是网关将这个ping包发送给了小丽
5)小丽收到这个ping包后,不修改任何内容,重复上面的步骤,将这个ping包发送给了小明。
三、物理层简介
物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是具体的传输媒体。物理层主要任务描述为:确定传输媒体的接口和一些特性,即:
机械特性:例接口形状、大小、引用数目。(如:以太网水晶网线8根)
电器特性:例规定电压范围(-5V到+5V)。
功能特性:例规定-5V表示0,+5v表示1。
过程特性:也称规程特性,规定建立连接时各个相关部件的工作步骤。
1、物理层常见的概念名词解释
1.1、信道
一般是表示向一个方向传送信息的媒体。信道可以分为:
单向通信(单工通信):只能有一个方向的通信而没反向的交互。
双向交替通信(半双工通信):通信的双方都可以发送信息,但是双方不能同时发送。
双向同时通信(全双工通信):通信的双方可以同时发送和接收信息。
1.2、基带信号和带通信号
基带信号:即基本频带信号,来自信源的信号。像计算机输出的各种文字或图像文件的数据信号都属于基带信号,基带信号就是发出直接表达了要传输的信息的信号,比如我们说话的声波就是基带信号。
带通信号:把基带信号记过载波调制后,把信号的频率范围搬移到较高频段以便在信道中传输(仅在一段频率范围内能够通过信道)
因此在传输距离较近时,计算机网络都采用基带传输方式,由于在近距离范围内基带信号的衰减不大,从而信号内容不会发生变化。如:计算机到监视器、打印机等外设的信号都是基带传输的。
后续还出现了曼彻斯特编码信号和差分曼彻斯特编码信号。
1.3、奈式准则和香农公式
奈式准则:1924年,奈奎斯特,提出了著名的奈式准则。在任何信道中,码元传输的速率是有上限的,否则就会出现码间串状的问题,使接收端对码元的判决(即识别)成为不可能。如果信道的频带越宽,也就是能够通过的信号高频分量越多。
香农公式:香农用信息理论推导出了带宽受限且有高斯白噪声干扰的信道极限、无差错的信息传输速率。信道的极限传输速率C可表 达为:b/s
W为信道的带宽(以Hz为单位),S为信道内所传信号的平均功率,N为信道内的高斯噪声功率
2、物理层下的传输媒体
2.1、导向传输媒体
屏蔽双绞线STP、无屏蔽双绞线UTP
50Ω同轴电缆用于数字传输,由于多用于基带传输。也叫基带同轴电缆;75Ω同轴电缆用于模拟传输,即带宽同轴电缆。不过现在比较少用。
具体的线序制作方法是:双绞线夹线顺序两边一致,统一都是八根。
从左起线的排序:
白绿、绿、白橙、蓝、白蓝、橙、白棕、棕。
白橙、橙、白绿、蓝、白蓝、绿、白棕、棕。
100M的其实只用1、2、3、6这几根,1000M的才会8根都用。直通线应用最广泛,主要是主机到交换机或集线器、路由器到交换机或集线器用直通线。
光纤(Fiber Optic Cable)以光脉冲的形式来传输信号,因此材质也以玻璃或有机玻璃为主。它由纤维芯、包层和保护套组成。光纤的结构和同轴电缆很类似,也是中心为一根由玻璃或透明塑料制成的光导纤维,周围包裹着保护材料,根据需要还可以多根光纤并合在一根光缆里面。根据光信号发生方式的不同,光纤可分为单模光纤和多模光纤。
2.2、非导向传输媒体
非导向传输媒体就是自由空间,其中的地磁波传输被称为无线传输。无线传输所使用的频段很广,短波通信主要是靠电离层的反射,但是短波信道的通信质量较差,微波在空间主要是直线传播。
2.3、物理层设备
集线器: 他在网络中只起到信号放大和重发作用,其目的就是扩大网络的传输范围,而不具备信号的定向传送能力。所有端口同属一个冲突域,主要用来延伸网络访问距离,扩展终端数量。
现在多用交换机,而不用集线器。交换机工作于数据链路层,它的每个端口相当于一个集线器,原理是根据数据帧头的MAC地址转发帧到合适的端口,每个端口是一个独立的冲突域。
总之,交换机的网络性能要远远优于集线器。随着技术的进步,交换机的成本已经降低,集线器逐步退出了市场。
四、数据链路层
1、数据链路层简介
数据链路层是物理层的上层,物理层是把电脑连接起来的物理手段,它主要规定了网络的一些电气属性,其作用是负责传送0和1的电信号。数据链路层位于物理层的上层,简单的阐述它的作用就是确定0和1的分组方式。
数据链路层使用的信道主要有以下两种类型:1):这种信道使用一对一的点对点通信方式;2):这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机数据发送。
链路:其实就是指从一个结点到的一段(有线或无线),中间没有任何其他的交换结点。可知,一条链路只是一条的一个组成部分。
数据链路:除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
在数据链路层的协议数据单元是数据链路层传送的是帧。现在再来说一下数据链路层的作用:。
2、帧及传输的三个问题
在数据链路层中应该有一些来控制帧的传输,数据链路层的协议有许多种,但都需要解决三个基本的问题:。
2.1、封装成帧
封装成帧 (framing) 就是在一段数据的前后分别添加和,然后就构成了一个帧。为什么要封装成帧?这一点我们从分组交换的概念中应该能够知道一些,因为在互联网上传送的数据都以分组(IP数据报)为传送单位,而网络层的下一层就是数据链路层,将分组加上首部和尾部就变成了帧。首部和尾部的一个重要作用就是(确定帧的界限),当然也包括一些重要的控制信息。
显然,为了提高帧的传输效率,应当使帧的数据部分(IP数据报)尽可能地大于首部和尾部的长度。当是每一种链路层的协议都规定了帧的数据部分的最大长度--,下面的图给出了帧的首部和尾部的位置,以及帧的数据部分和MTU的关系。
当数据是由可打印的 ASCII 码组成的文本文件时,帧定界可以使用特殊的。 控制字符 (Start Of Header) 放在一帧的最前面,表示帧的。另一个控制字符 (End Of Transmission) 表示。假定发送端在发送时出现故障,某个帧没有发送完,接收端可以通过是否有EOT来确定这个帧是否完整。
2.2、透明传输
所谓的透明传输是指在数据链路层传送的数据,都能够按照的通过这个数据链路层。也就是相当于数据链路层对于这些数据是透明的。上面,已经说过可以通过控制字符来确定一个帧的开始与结尾,但是如果一个字节的二进制编码恰好和控制字符SOH或EOT一样,那么就会出现。
所以怎么解决这个问题呢?解决方法: 或 (character stuffing)。 的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个“ESC” (其十六进制编码是 1B)。的数据链路层在将数据送往网络层之前的。 如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
2.3、
这里所说的“差错”是“比特差错”,1 可能会变成 0 而 0 也可能变成 1。在一段时间内,占所传输的比率称为 BER (Bit Error Rate)。与有很大的关系。 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。
1)可能漏掉某些差错,但是非常少;2)较大的EDC字段通常有更好的检测性能;1)奇偶校验码(垂直奇(偶)校验、水平奇(偶)校验水平、垂直奇(偶)校验(方阵码) );2)循环冗余编码CRC。
在传送的帧中,广泛使用了 的检错技术。
在数据后面添加上的称为 (Frame Check Sequence)。
。CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。
仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受(accept)。“无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。也就是说:“凡是接收端数据链路层接受的帧都没有传输差错”(有差错的帧就丢弃而不接受)。
3、点对点协议PPP
前面已经说过了在点对点信道上协议应该要解决的三个基本的问题,下面就来说一下在数据链路层用得最广泛的协议--。
串行线路网际协议(SLIP)是用于WAN链路上封装TCP/IP流量的最早的点到点协议。
:用户使用拨号电话线接入互联网时, 用户计算机和 ISP 进行通信时所使用的数据链路层协议就是 PPP 协议。
3.1、PPP 协议应满足的需求
- 简单——这是首要的要求 接受方每收到一个帧,就进行 CRC 检验。如果 CRC 检验正确,就收下这个帧;反之,就丢弃这个帧。使用 PPP 的数据链路层向上不提供可靠传输服务,如需可靠传输,则由运输层来完成。
- 封装成帧
- 透明性
- 多种网络层协议
- 多种类型链路
- 差错检测
- 检测连接状态
- 最大传送单元
- 网络层地址协商
- 数据压缩协商
3.2、PPP 协议的组成
1992 年制订了 PPP 协议。经过 1993 年和 1994 年的修订,现在的 PPP 协议已成为因特网的正式标准[RFC 1661]。