史上最全的TCP/IP协议原理

Posted 穆瑾轩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了史上最全的TCP/IP协议原理相关的知识,希望对你有一定的参考价值。

              TCP/IP协议原理

一、TCP/IP协议简介及起源

    起初,计算机只是以单机模式(独立模式)被广泛应用,随着发展,计算机被一个个的连接起来,形成了一个计算机网路,从而实现了信息共享,远距离传递信息等工作,计算机网络,根据规模可分为2种:

    WAN:Wide Area Network(广域网)

    LAN:Local Area Nerwork(局域网)

    异构型计算机连接和电子邮件、万维网等信息传播方式促使互联网开始从大到整个公司小到一个家庭内部开始普及互联网,实现了世界各地用户通过接入互联网而即时沟通与交流。

    计算机通信诞生之初,系统化与标准化未收到重视,不同厂商只出产各自的网络来实现通信,这样就造成了对用户使用计算机网络造成了很大障碍,缺乏灵活性和可扩展性。为解决该问题,ISO(国际标准化组织)制定了一个国际标准OSI(开放式通信系统互联参考模型)。TCP/IP并非ISO指定,是由IETF(国际互联网工程任务组)建议、致力推进标准化的一种协议,其中,大学等研究机构和计算机行业是推动标准化的核心力量,现已成为业界标准协议。

    这种标准协议就是计算机之间通过网络实现通信时事先达成的一种“约定”;这种“约定”使那些由不同厂商的设备,不同CPU及不同操作系统组成的计算机之间,只要遵循相同的协议就可以实现通信。协议可以分很多种,每一种协议都明确界定了它的行为规范:2台计算机之间必须能够支持相同的协议,并且遵循相同的协议进行处理,才能实现相互通信。

    互联网中常用的代表性的协议有IP、TCP、HTTP等,LAN中常用协议有IPX、SPX等。“计算机网络体系结构”将这些网络协议进行了系统的归纳,TCP/IP就是这些协议的集合。

1、TCP/IP的定义

    TCP/IP是Transmission Control Protocol / Internet Protocol(传输控制协议/互联网络协议)的缩写。TCP和IP只是其中的2个协议,也是很重要的2个协议,所以用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年间推出目前形式的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上的主机数量突破了100000台,NSFNET主干网升级到了T1速度,为每秒1.544M位(Mb/s)。

    1990年,麦吉尔大学发布了基于TCP/IP的Arichie协议和服务,它支持Internet上的用户搜索任意位置、任意类型的基于文本的文档归档,特别是FTP站点上的内容。

    1991年,商业互联网交互成立。

    1992年,国际互联网协会(ISOC)成立。Internet上的主机数量突破了一百万。NSFNET主干网升级到了T3速度,为44.736Mb/s。CERN公开发布HTTP和Web服务器技术(Web诞生)。

    1995年,Netscape创建了Netscape Navigator,并启动了Web的商业化。

    1996年,微软开发了IE浏览器。

    2000年-2001年,情书(Love Letter)蠕虫感染了百万台感染计算机、Sircam病毒和红色代码(Code Red)感染了数千台Web服务器和数千个电子邮件账户。

    直到今天,新的服务新的协议不断的浮现在Internet上,但TCP/IP依然蓬勃强劲。

3、OSI网络参考模型

    国际标准化组织开发系统互联网络参考模型,有时候也称ISO/OSI网络参考模型,也叫七层模型。其目标是建立一个全新的、经过改进的、专门设计的协议套件来取代TCP/IP。但是并未被广泛采用,却成了讨论组网、解释网络如何运行的标准方法。

3.1、物理层

    物理层就是把电脑连接起来的物理手段, 通过物理介质传输比特流。常见的有 集线器、中继器、调制解调器、光纤、双绞线,以及无线电波,它决定了电信号(0和1)的传输方式,物理介质的不同决定了电信号的传输带宽、速率、传输距离以及抗干扰性等等。 实际最终信号的传输是通过物理层实现的。物理层的PDU(协议数据单元)由专门的串行信号模式组成,这些模式对应于数据链路层里的帧的位模式。

3.2、数据链路层

    网络通信就是把有特定意义的数据通过物理介质传送给对方,单纯的发送 0 和 1 是没有意义的,要传输有意义的数据,就需要以字节为单位对 0 和 1 进行分组,并且要标识好每一组电信号的信息特征,然后按照分组的顺序依次发送。
    如:以太网规定一组电信号就是一个数据包,一个数据包被称为 一帧, 制定这个规则的协议就是 以太网协议。将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测。在计算机网络中由于各种干扰的存在,物理链路是不可靠的。因此,这一层的主要功能是在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。
    数据链路层又分为2个子层:逻辑链路控制子层(LLC)和媒体访问控制子层(MAC)。MAC子层处理CSMA/CD算法、数据出错校验、成帧等;LLC子层定义了一些字段使上次协议能共享数据链路层。 在实际使用中,LLC子层并非必需的。
    链路层的主要工作是:对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方。

3.3、网络层

    一般地,数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信。

    发送者如何知道接收者的MAC地址?又如何知道接受者是否和自己属于同一子网?不再同一子网的又如何发送?为了解决这些问题,网络层引入了三个协议,分别是IP协议ARP协议路由协议。

3.3.1、   IP协议

    数据链路层中使用的物理地址(如MAC地址)仅解决网络内部的寻址问题。在不同子网之间通信时,为了识别和找到网络中的设备,每一子网中的设备都会被分配一个唯一的地址。由于各子网使用的物理技术可能不同,因此这个地址应当是逻辑地址(如IP地址)。因此,网络层引入了IP协议,制定了一套新地址,使得我们能够区分两台主机是否同属一个网络,这套地址就是网络地址,也就是所谓的IP地址。

    IP地址目前有两个版本,分别是IPv4IPv6,IPv4是一个32位的地址,常采用4个十进制数字表示。IP协议将这个32位的地址分为两部分,前面部分代表网络地址,后面部分表示该主机在局域网中的地址。

3.3.2、ARP协议

    地址解析协议,是根据IP地址获取MAC地址的一个网络层协议。

    ARP首先会发起一个请求数据包,数据包的首部包含了目标主机的IP地址,然后这个数据包会在链路层进行再次包装,生成以太网数据包,最终由以太网广播给子网内的所有主机,每一台主机都会接收到这个数据包,并取出标头里的IP地址,然后和自己的IP地址进行比较,如果相同就返回自己的MAC地址,如果不同就丢弃该数据包。

3.3.3、路由协议

    ARP的MAC寻址还是局限在同一个子网中,因此网络层引入了路由协议,首先通过IP协议来判断两台主机是否在同一个子网中,如果在同一个子网,就通过ARP协议查询对应的MAC地址,然后以广播的形式向该子网内的主机发送数据包;如果不在同一个子网,以太网会将该数据包转发给本子网的网关进行路由。网关是互联网上子网与子网之间的桥梁,所以网关会进行多次转发,最终将该数据包转发到目标IP所在的子网中,然后再通过ARP获取目标机MAC,最终也是通过广播形式将数据包发送给接收方。

    网络层的主要工作是:定义网络地址,区分网段,子网内MAC寻址,对于不同子网的数据包进行路由。

3.4、传输层

    链路层定义了主机的身份,即MAC地址, 而网络层定义了IP地址,明确了主机所在的网段,有了这两个地址,数据包就从可以从一个主机发送到另一台主机。而每台电脑都有可能同时运行着很多个应用程序,所以当数据包被发送到主机上以后,是无法确定哪个应用程序要接收这个包。

    因此传输层引入了UDP协议来解决这个问题,为了给每个应用程序标识身份,UDP协议定义了端口,同一个主机上的每个应用程序都需要指定唯一的端口号,并且规定网络中传输的数据包必须加上端口信息。 这样,当数据包到达主机以后,就可以根据端口号找到对应的应用程序了。

    UDP协议比较简单,实现容易,但它没有确认机制, 数据包一旦发出,无法知道对方是否收到,因此可靠性较差,为了解决这个问题,提高网络可靠性,TCP协议就诞生了,TCP即传输控制协议,是一种面向连接的、可靠的、基于字节流的通信协议。简单来说TCP就是有确认机制的UDP协议,每发出一个数据包都要求确认,如果有一个数据包丢失,就收不到确认,发送方就必须重发这个数据包。

    为了保证传输的可靠性,TCP 协议在 UDP 基础之上建立了三次对话的确认机制,也就是说,在正式收发数据前,必须和对方建立可靠的连接。

    传输层的主要工作是:传输层建立了主机端到端的链接,端口号既是这里的“端”(标识应用程序身份),TCP协议可以保证数据传输的可靠性

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)HTTP超文本传输协议:这是一种最基本的客户机/服务器的访问协议;浏览器向服务器发送请求,而服务器回应相应的网页。

    2)TFTP简单文件传送协议:客户服务器模式,使用UDP数据报,只支持文件传输,不支持交互,TFTP代码占内存小 。

    3)FTP文件传送协议:提供交互式的访问,基于客户服务器模式,面向连接 使用TCP可靠的运输服务,减少/消除不同操作系统下文件的不兼容性 。

    4)SMTP简单邮件传送协议:Client/Server模式,面向连接 ,基本功能:写信、传送、报告传送情况、显示信件、接收方处理信件。

二、IP简介

1、IP定义

    21世纪关于网络,人们最长听见的用词之一便是:IP地址!

    关于IP的定义:是Internet Protocol的缩写,指TCP/IP网络体系中的网际互联协议。IP协议规定了所有连接到互联网中的设备都必须拥有自己唯一的“身份号”—IP地址,网络设备间进行信息交互时,必须在数据报文中设定目标设备的IP地址方能将数据准确传输至目标设备,好比快递必须填写收件人地址,快递员方能根据收件人地址将快递顺利送至收件人处。互联网中的一台网络设备可以拥有多个IP地址,但一个IP地址只能对应一台网络设备,即IP地址具有唯一性。

2、 IP地址的构成

    IP地址是一串数字,遵循国际编写规范,共由32位二进制数字0/1组成。当以十进制数字表达时,数字IP地址使用点分割十进制表示法,采用格式n.n.n.n,每8位为一组,用标准的IP术语来说称为八位元组(每个字段最大值是255)。如192.168.0.0,即地址格式为:IP地址=网络地址+主机地址 或IP地址=主机地址+子网地址+主机地址。地址总容量近43亿个(2^32=4294967296)。然而随着互联网的发展以及全世界庞大的人口数量,IPv4地址远远不够用。因此,诞生了IPv6,IPv6地址采用128位标识,数量为2的128次方,相当于IPv4地址空间的4次幂。本文介绍的IP为IPv4。

     最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID)网络ID主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。各种网络的差异很大,有的网络中有很多主机,而有的网络中主机数很少,只需做到在该单位管辖的范围内无重复的主机号即可。把IP地址划分为不同的类别是为了更好地满足不同用户的需求。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的浪费。

    子网的出现是基于以下原因:

  • 节约IP资源:随着互联的发展IPV4地址资源可能会耗尽,如果不划分子网直接将一个C类地址分给一个企业,C类地址可容纳256台主机,但是可能该企业只有20台计算机,这就造成极大浪费
  • 减少网络流量,优化网络性能:隔离数据在整个网络内广播,提高信息传输速率如:C类广播到256台和广播到20台效率显而易见。

    子网掩码:又叫网络掩码,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,必须配合IP使用

    用途:通过子网掩码计算出一台主机所在的子网和其他网络的关系,进行正确的通信(网络地址相同,表明接受方在本网络上,那么可以把数据包直接发送到目标主机,否则就需要路由网关将数据包转发送到目的地)

    组成:但是为了方便记忆和美观,IP地址通常是将每8位二进制数转化为十进制来表示,中间用'.'分隔,如255.255.255.0

    A/B/C类地址的缺省子网掩码:

    A类:255.0.0.0    B类:255.255.0.0   C类:255.255.255.0

3.1、子网掩码的计算

    1)利用子网数来计算

    步骤: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位) ==》得到的子网掩码:255.255.255.224

    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   建议不使用,但也并不是不能使用

    2)利用主机数来计算

    步骤:a)将主机数目转化为二进制来表示;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为子网掩码值。

    3)等分或不等分技巧

等分法:

    等分成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)

    4)快速计算子网/主机数的方法

    题目1:如果所需子网数为7,求子网掩码。

    解答:与7最近的2^x是8(2^3),而此时只能有6个子网可以分配(一个用于网络一个用于广播,所以需要减去2,一般最小地址作为网络地址,最大地址作为广播地址),不能满足 7个子网的需求,所只能取16(2^4),256-16=240,所以子网掩码为 255.255.255.240

    题目2:A类IP地址,子网掩码为255.224.0.0,它所能划分的最大有效子网数是多少?

    解答:将子网掩码转换成二进制表示11111111.11100000.00000000.00000000,统计一下它的网络位共有11位,A类地址网络位的基础数是8,二者之间的位数差是3,最大有效子网数就是2的3次方,即最多可以划分8个子网络。

    题目3:A类IP地址,子网掩码为255.252.0.0,将它划分成若干子网络,每个子网络中可用主机数有多少?
   
解答:将子网掩码转换成二进制表示11111111.11111100.00000000.00000000,统计一下它的主机位共有18位,最大可用主机数就是2的18次方减2(除去全是0的网络地址和全是1广播地址),即每个子网络最多有262142台主机可用。   

    4)计算网段。

  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网段。

3.2、CIDR斜线表示法

    也许我们常常会见到这种写法:192.168.10.32/28,其中用28位表示网络ID。     

    CIDR( Classless Inter-Domain Routing ,无类域间路由选择),它是ISP( Intemet Service Provider ,因特网服务提供商)用来将大量地址分配给客户的一种方法。ISP 以特定大小的块提供地址。从ISP那里获得的地址块类似于192.168.10.32/28,这指出了子网掩码。这种斜杠表示法(/)指出了子网掩码中有多少位为1 ,显然最大为/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地址是否属于同一子网络,这时只有在同一子网的计算机才能"直接"互通。不同网络号的计算机要通过网关(Gateway)才能互通,简单来说,网关它就是为了管理不同网段的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路由表主要字段说明

Destination GatewayGenmaskFlagsMetric Ref Use  Iface
目的地,终点,就是我们要去访问的目的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/24255.255.255.010.1.1.0
小美(10.1.1.3/24)10.1.1.1/24255.255.255.010.1.1.0
小丽(10.1.2.2/24)10.1.2.1/24255.255.255.010.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地址,发送ping包给网关,网关接收以太网帧。

    4)网关路由转发

    网关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Ω同轴电缆用于模拟传输,即带宽同轴电缆。不过现在比较少用。

    

    网线:

    1)直通线:具体的线序制作方法是:双绞线夹线顺序两边一致,统一都是八根。

    从左起线的排序:

    EIA/TIA 568A标准:白绿、绿、白橙、蓝、白蓝、橙、白棕、棕。

    EIA/TIA 568B标准:白橙、橙、白绿、蓝、白蓝、绿、白棕、棕。

    100M的其实只用1、2、3、6这几根,1000M的才会8根都用。直通线应用最广泛,主要是主机到交换机或集线器、路由器到交换机或集线器用直通线。

    光纤:光纤(Fiber Optic Cable)以光脉冲的形式来传输信号,因此材质也以玻璃或有机玻璃为主。它由纤维芯、包层和保护套组成。光纤的结构和同轴电缆很类似,也是中心为一根由玻璃或透明塑料制成的光导纤维,周围包裹着保护材料,根据需要还可以多根光纤并合在一根光缆里面。根据光信号发生方式的不同,光纤可分为单模光纤和多模光纤。

2.2、非导向传输媒体

    非导向传输媒体就是自由空间,其中的地磁波传输被称为无线传输。无线传输所使用的频段很广,短波通信主要是靠电离层的反射,但是短波信道的通信质量较差,微波在空间主要是直线传播。

2.3、物理层设备

    集线器: 他在网络中只起到信号放大和重发作用,其目的就是扩大网络的传输范围,而不具备信号的定向传送能力。所有端口同属一个冲突域,主要用来延伸网络访问距离,扩展终端数量。

    现在多用交换机,而不用集线器。交换机工作于数据链路层,它的每个端口相当于一个集线器,原理是根据数据帧头的MAC地址转发帧到合适的端口,每个端口是一个独立的冲突域。

    总之,交换机的网络性能要远远优于集线器。随着技术的进步,交换机的成本已经降低,集线器逐步退出了市场。

四、数据链路层

1、数据链路层简介

    数据链路层是物理层的上层,物理层是把电脑连接起来的物理手段,它主要规定了网络的一些电气属性,其作用是负责传送0和1的电信号。数据链路层位于物理层的上层,简单的阐述它的作用就是确定0和1的分组方式。数据链路层在不可靠的物理介质上提供可靠的传输。

    数据链路层使用的信道主要有以下两种类型:1)点到点信道:这种信道使用一对一的点对点通信方式;2)广播信道:这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机数据发送。

    链路:其实就是指从一个结点到相邻结点的一段物理线路(有线或无线),中间没有任何其他的交换结点。可知,一条链路只是一条通路的一个组成部分。

    数据链路:除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

    在数据链路层的协议数据单元PDU帧,数据链路层传送的是帧。现在再来说一下数据链路层的作用:数据链路层把网络层交下来的数据(网络层的PDU是IP数据报或叫分组,包)构成帧发送到链路上,以及把接受到的帧中的数据取出来并上交给网络层

2、帧及传输的三个问题

    在数据链路层中应该有一些协议来控制帧的传输,数据链路层的协议有许多种,但都需要解决三个基本的问题:封装成帧、透明传输、差错控制

2.1、封装成帧

    封装成帧 (framing) 就是在一段数据的前后分别添加首部尾部,然后就构成了一个帧。为什么要封装成帧?这一点我们从分组交换的概念中应该能够知道一些,因为在互联网上传送的数据都以分组(IP数据报)为传送单位,而网络层的下一层就是数据链路层,将分组加上首部和尾部就变成了帧。首部和尾部的一个重要作用就是帧定界(确定帧的界限),当然也包括一些重要的控制信息。

    显然,为了提高帧的传输效率,应当使帧的数据部分(IP数据报)尽可能地大于首部和尾部的长度。当是每一种链路层的协议都规定了帧的数据部分的最大长度--MTU,下面的图给出了帧的首部和尾部的位置,以及帧的数据部分和MTU的关系。

    当数据是由可打印的 ASCII 码组成的文本文件时,帧定界可以使用特殊的帧定界符。 控制字符 SOH (Start Of Header) 放在一帧的最前面,表示帧的首部开始。另一个控制字符 EOT (End Of Transmission) 表示帧的结束。假定发送端在发送时出现故障,某个帧没有发送完,接收端可以通过是否有EOT来确定这个帧是否完整。

2.2、透明传输

    所谓的透明传输是指在数据链路层传送的数据,都能够按照原样没有差错的通过这个数据链路层。也就是相当于数据链路层对于这些数据是透明的。上面,已经说过可以通过控制字符来确定一个帧的开始与结尾,但是如果一个字节的二进制编码恰好和控制字符SOH或EOT一样,那么就会出现帧定界的错误

    所以怎么解决这个问题呢?解决方法:字节填充 (byte stuffing) 或字符填充 (character stuffing)。 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC” (其十六进制编码是 1B)。接收端的数据链路层在将数据送往网络层之前删除插入转义字符。 如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。

2.3、差错检测

    这里所说的“差错”是“比特差错

以上是关于史上最全的TCP/IP协议原理的主要内容,如果未能解决你的问题,请参考以下文章

最全的socket,tcp,http三者之间的区别和原理

TCP/IP协议原理及应用

TCP/IP协议原理与介绍

TCP/IP协议的三次握手及实现原理

TCP/IP协议原理与应用笔记27:网际协议(IP)之 选项(Options)

TCP/IP概述和历史