最全计算机⽹络基础知识——总结篇
阅读⽬录
1. ⽹络层次划分
2. OSI七层⽹络模型
3. IP地址
4. ⼦⽹掩码及⽹络划分
5. ARP/RARP协议
6. 路由选择协
7. TCP/IP协议
8. UDP协议 
9. DNS协议
10. NAT协议
11. DHCP协议
12. HTTP协议
13. ⼀个举例
计算机⽹络学习的核⼼内容就是⽹络协议的学习。⽹络协议是为计算机⽹络中进⾏数据交换⽽建⽴的规则、标准或者说是约定的集合。因为不同⽤户的数据终端可能采取的字符集是不同的,两者需要进⾏通信,必须要在⼀定的标准上进⾏。⼀个很形象地⽐喻就是我们的语⾔,我们⼤天朝地⼴⼈多,地⽅性语⾔也⾮常丰富,⽽且⽅⾔之间差距巨⼤。A地区的⽅⾔可能B地区的⼈根本⽆法接受,所以我们要为全国⼈名进⾏沟通建⽴⼀个语⾔标准,这就是我们的普通话的作⽤。同样,放眼全球,我们与外国友⼈沟通的标准语⾔是英语,所以我们才要苦逼的学习英语。
计算机⽹络协议同我们的语⾔⼀样,多种多样。⽽ARPA公司与1977年到1979年推出了⼀种名为ARPANET的⽹络协议受到了⼴泛的热捧,其中最主要的原因就是它推出了⼈尽皆知的TCP/IP标准⽹络协议。⽬前TCP/IP协议已经成为Internet中的“通⽤语⾔”,下图为不同计算机之间利⽤TCP/IP进⾏通信的⽰意图。
1、⽹络层次划分
为了使不同计算机⼚家⽣产的计算机能够相互通信,以便在更⼤的范围内建⽴计算机⽹络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机⽹络体系结构的通信协议划分为七层,⾃下⽽上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、⽹络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表⽰层(Presentation Layer)、应⽤层(Application Layer)。其中第四层完成数据传送服务,上⾯三层⾯向⽤户。
除了标准的OSI七层模型以外,常见的⽹络层次划分还有TCP/IP四层协议以及TCP/IP五层协议,它们之间的对应关系如下图所⽰:
2、OSI七层⽹络模型
TCP/IP协议毫⽆疑问是互联⽹的基础协议,没有它就根本不可能上⽹,任何和互联⽹有关的操作都离不开TCP/IP协议。不管是OSI七层模型还是TCP/IP的四层、五层模型,每⼀层中都要⾃⼰的专属协议,完成⾃⼰相应的⼯作以及与上下层级之间进⾏沟通。由于OSI七层模型为⽹络的标准层次划分,所以我们以OSI七层模型为例从下向上进⾏⼀⼀介绍。
1)物理层(Physical Layer)
激活、维持、关闭通信端点之间的机械特性、电⽓特性、功能特性以及过程特性。该层为上层协议提供了⼀个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输。物理层记住两个重要的设备名称,中继器(Repeater,也叫放⼤器)和集线器。
2)数据链路层(Data Link Layer)
数据链路层在物理层提供的服务的基础上向⽹络层提供服务,其最基本的服务是将源⾃⽹络层来的数据可靠地传输到相邻节点的⽬标机⽹络层。为达到这⼀⽬的,数据链路必须具备⼀系列相应的功能,主要有:如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收⽅相匹配;以及在两个⽹络实体之间提供数据链路通路的建⽴、维持和释放的管理。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作⽤包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
有关数据链路层的重要知识点:
1> 数据链路层为⽹络层提供可靠的数据传输;
2> 基本数据单位为帧;
3> 主要的协议:以太⽹协议;
4> 两个重要设备名称:⽹桥和交换机。
3)⽹络层(Network Layer)
⽹络层的⽬的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建⽴、保持和终⽌等。它提供的服务使传输层不需要了解⽹络中的数据传输和交换技术。如果您想⽤尽量少的词来记住⽹络层,那就是“路径选择、路由及逻辑寻址”。
⽹络层中涉及众多的协议,其中包括最重要的协议,也是TCP/IP的核⼼协议——IP协议。IP协议⾮常简单,仅仅提供不可靠、⽆连接的传送服务。IP协议的主要功能有:⽆连接数据报传输、数据报路由选择和差错控制。与IP协议配套使⽤实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特⽹报⽂协议ICMP、因特⽹组管理协议IGMP。具体的协议我们会在接下来的部分进⾏总结,有关⽹络层的重点为:
1> ⽹络层负责对⼦⽹间的数据包进⾏路由选择。此外,⽹络层还可以实现拥塞控制、⽹际互连等功能;
2> 基本数据单位为IP数据报;
3> 包含的主要协议:
IP协议(Internet Protocol,因特⽹互联协议);
ICMP协议(Internet Control Message Protocol,因特⽹控制报⽂协议);
ARP协议(Address Resolution Protocol,地址解析协议);
RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)。
4> 重要的设备:路由器。
4)传输层(Transport Layer)
第⼀个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。
传输层的任务是根据通信⼦⽹的特性,最佳的利⽤⽹络资源,为两个端系统的会话层之间,提供建⽴、维护和取消传输连接的功能,负责端到端的可靠数据传输。在这⼀层,信息传送的协议数据单元称为段或报⽂。
⽹络层只是根据⽹络地址将源结点发出的数据包传送到⽬的结点,⽽传输层则负责将数据可靠地传送到相应的端⼝。
有关⽹络层的重点:
1> 传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;
2> 包含的主要协议:TCP协议(Transmission Control Protocol,传输控制协议)、UDP协议(User Datagram Protocol,⽤户数据报协议);
3> 重要设备:⽹关。
5)会话层
会话层管理主机之间的会话进程,即负责建⽴、管理、终⽌进程之间的会话。会话层还利⽤在数据中插⼊校验点来实现数据的同步。
6)表⽰层
表⽰层对上层数据或信息进⾏变换以保证⼀个主机应⽤层信息可以被另⼀个主机的应⽤程序理解。表⽰层的数据转换包括数据的加密、压缩、格式转换等。
7)应⽤层
为操作系统或⽹络应⽤程序提供访问⽹络服务的接⼝。
会话层、表⽰层和应⽤层重点:
1> 数据传输基本单位为报⽂;
2> 包含的主要协议:FTP(⽂件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。
3、IP地址
1)⽹络地址
IP地址由⽹络号(包括⼦⽹号)和主机号组成,⽹络地址的主机号为全0,⽹络地址代表着整个⽹络。
2)⼴播地址
⼴播地址通常称为直接⼴播地址,是为了区分受限⼴播地址。
⼴播地址与⽹络地址的主机号正好相反,⼴播地址中,主机号为全1。当向某个⽹络的⼴播地址发送消息时,该⽹络内的所有主机都能收到该⼴播消息。
3)组播地址
D类地址就是组播地址。
先回忆下A,B,C,D类地址吧:
A类地址以00开头,第⼀个字节作为⽹络号,地址范围为:0.0.0.0~127.255.255.255;
B类地址以10开头,前两个字节作为⽹络号,地址范围是:128.0.0.0~191.255.255.255;
其中两个主要的协议
C类地址以110开头,前三个字节作为⽹络号,地址范围是:192.0.0.0~223.255.255.255。
D类地址以1110开头,地址范围是224.0.0.0~239.255.255.255,D类地址作为组播地址(⼀对多的通信);
E类地址以1111开头,地址范围是240.0.0.0~255.255.255.255,E类地址为保留地址,供以后使⽤。
注:只有A,B,C有⽹络号和主机号之分,D类地址和E类地址没有划分⽹络号和主机号。
4)255.255.255.255
该IP地址指的是受限的⼴播地址。受限⼴播地址与⼀般⼴播地址(直接⼴播地址)的区别在于,受限⼴播地址只能⽤于本地⽹络,路由器不会转发以受限⼴播地址为⽬的地址的分组;⼀般⼴播地址既可在本地⼴播,也可跨⽹段⼴播。例如:主机192.168.1.1/30上的直接⼴播数据包后,另外⼀个⽹段192.168.1.5/30也能收到该数据报;若发送受限⼴播数据报,则不能收到。
注:⼀般的⼴播地址(直接⼴播地址)能够通过某些路由器(当然不是所有的路由器),⽽受限的⼴播地址不能通过路由器。
5)0.0.0.0
常⽤于寻⾃⼰的IP地址,例如在我们的RARP,BOOTP和DHCP协议中,若某个未知IP地址的⽆盘机想要知道⾃⼰的IP地址,它就以255.255.255.255为⽬的地址,向本地范围(具体⽽⾔是被各个路由器屏蔽的范围内)的服务器发送IP请求分组。
6)回环地址
127.0.0.0/8被⽤作回环地址,回环地址表⽰本机的地址,常⽤于对本机的测试,⽤的最多的是127.0.0.1。
7)A、B、C类私有地址
私有地址(private address)也叫专⽤地址,它们不会在全球使⽤,只具有本地意义。
A类私有地址:10.0.0.0/8,范围是:10.0.0.0~10.255.255.255
B类私有地址:172.16.0.0/12,范围是:172.16.0.0~172.31.255.255
C类私有地址:192.168.0.0/16,范围是:192.168.0.0~192.168.255.255
4、⼦⽹掩码及⽹络划分
随着互连⽹应⽤的不断扩⼤,原先的IPv4的弊端也逐渐暴露出来,即⽹络号占位太多,⽽主机号位太少,所以其能提供的主机地址也越来越稀缺,⽬前除了使⽤NAT在企业内部利⽤保留地址⾃⾏分配以外,通常都对⼀个⾼类别的IP地址进⾏再划分,以形成多个⼦⽹,提供给不同规模的⽤户使⽤。
这⾥主要是为了在⽹络分段情况下有效地利⽤IP地址,通过对主机号的⾼位部分取作为⼦⽹号,从通常的⽹络位界限中扩展或压缩⼦⽹掩码,⽤来创建某类地址的更多⼦⽹。但创建更多的⼦⽹时,在每个⼦⽹上的可⽤主机地址数⽬会⽐原先减少。
什么是⼦⽹掩码?
⼦⽹掩码是标志两个IP地址是否同属于⼀个⼦⽹的,也是32位⼆进制地址,其每⼀个为1代表该位是⽹络位,为0代表主机位。它和IP地址⼀样也是使⽤点式⼗进制来表⽰的。如果两个IP地址在⼦⽹掩码的按位与的计算下所得结果相同,即表明它们共属于同⼀⼦⽹中。
在计算⼦⽹掩码时,我们要注意IP地址中的保留地址,即“ 0”地址和⼴播地址,它们是指主机地址或⽹络地址全为“ 0”或“ 1”时的IP地址,它们代表着本⽹络地址和⼴播地址,⼀般是不能被计算在内的。
⼦⽹掩码的计算:
对于⽆须再划分成⼦⽹的IP地址来说,其⼦⽹掩码⾮常简单,即按照其定义即可写出:如某B类IP地址为 10.12.3.0,⽆须再分割⼦⽹,则该IP地址的⼦⽹掩码255.255.0.0。如果它是⼀个C类地址,则其⼦⽹掩码为 255.255.255.0。其它类推,不再详述。下⾯我们关键要介绍的是⼀个IP地址,还需要将其⾼位主机位再作为划分出的⼦⽹⽹络号,剩下的是每个⼦⽹的主机号,这时该如何进⾏每个⼦⽹的掩码计算。
下⾯总结⼀下有关⼦⽹掩码和⽹络划分常见的⾯试考题:
1)利⽤⼦⽹数来计算
在求⼦⽹掩码之前必须先搞清楚要划分的⼦⽹数⽬,以及每个⼦⽹内的所需主机数⽬。
(1) 将⼦⽹数⽬转化为⼆进制来表⽰;
如欲将B类IP地址168.195.0.0划分成27个⼦⽹:27=11011;
(2) 取得该⼆进制的位数,为N;
该⼆进制为五位数,N = 5
(3) 取得该IP地址的类⼦⽹掩码,将其主机地址部分的的前N位置1即得出该IP地址划分⼦⽹的⼦⽹掩码。
将B类地址的⼦⽹掩码255.255.0.0的主机地址前5位置 1,得到 255.255.248.0
2)利⽤主机数来计算
如欲将B类IP地址168.195.0.0划分成若⼲⼦⽹,每个⼦⽹内有主机700台:
(1) 将主机数⽬转化为⼆进制来表⽰;
700=1010111100;
(2) 如果主机数⼩于或等于254(注意去掉保留的两个IP地址),则取得该主机的⼆进制位数,为N,这⾥肯定 N<8。如果⼤于254,则
N>8,这就是说主机地址将占据不⽌8位;
该⼆进制为⼗位数,N=10;
(3) 使⽤255.255.255.255来将该类IP地址的主机地址位数全部置1,然后从后向前的将N位全部置为 0,即为⼦⽹掩码值。
将该B类地址的⼦⽹掩码255.255.0.0的主机地址全部置1,得到255.255.255.255,然后再从后向前将后 10位置0,即为:
11111111.11111111.11111100.00000000,即255.255.252.0。这就是该欲划分成主机为700台的B类IP地址 168.195.0.0的⼦⽹掩码。
3)还有⼀种题型,要你根据每个⽹络的主机数量进⾏⼦⽹地址的规划和计算⼦⽹掩码。这也可按上述原则进⾏计算。
⽐如⼀个⼦⽹有10台主机,那么对于这个⼦⽹需要的IP地址是:
10+1+1+1=13
注意:加的第⼀个1是指这个⽹络连接时所需的⽹关地址,接着的两个1分别是指⽹络地址和⼴播地址。
因为13⼩于16(16等于2的4次⽅),所以主机位为4位。⽽256-16=240,所以该⼦⽹掩码为255.255.255.240。
如果⼀个⼦⽹有14台主机,不少⼈常犯的错误是:依然分配具有16个地址空间的⼦⽹,⽽忘记了给⽹关分配地址。这样就错误了,因为14+1+1+1=17,17⼤于16,所以我们只能分配具有32个地址(32等于2的5次⽅)空间的⼦⽹。这时⼦⽹掩码为:255.255.255.224。
5、ARP/RARP协议
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的⼀个TCP/IP协议。主机发送信息时将包含⽬标IP地址的ARP请求⼴播到⽹络上的所有主机,并接收返回消息,以此确定⽬标的物理地址;收到返回消息后将该IP地址和物理地址存⼊本机ARP 缓存中并保留⼀定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建⽴在⽹络中各个主机互相信任的基础上的,⽹络上的主机可以⾃主发送ARP应答消息,其他主机收到应答报⽂时不会检测该报⽂的真实性就会将其记⼊本机ARP缓存;由此攻击者就可以向某⼀主机发送伪ARP应答报⽂,使其发送的信息⽆法到达预期的
主机或到达错误的主机,这就构成了⼀个ARP欺骗。ARP命令可⽤于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。
ARP⼯作流程举例:
主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为⼯作流程:
(1)根据主机A上的路由表内容,IP确定⽤于访问主机B的转发IP地址是192.168.1.2。然后A主机在⾃⼰的本地ARP缓存中检查主机B的匹配MAC地址。
(2)如果主机A在ARP缓存中没有到映射,它将询问192.168.1.2的硬件地址,从⽽将ARP请求帧⼴播到本地⽹络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地⽹络上的每台主机都接收到ARP请求并且检查是否与⾃⼰的IP地址匹配。如果主机发现请求的IP地址与⾃⼰的IP地址不匹配,它将丢弃ARP请求。
(3)主机B确定ARP请求中的IP地址与⾃⼰的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
(4)主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
(5)当主机A收到从主机B发来的ARP回复消息时,会⽤主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有⽣存期的,⽣存期结束后,将再次重复上⾯的过程。主机B的MAC地址⼀旦确定,主机A就能向主机B发送IP通信了。
逆地址解析协议,即RARP,功能和ARP协议相对,其将局域⽹中某个主机的物理地址转换为IP地址,⽐如局域⽹中有⼀台主机只知道物理地址⽽不知道IP地址,那么可以通过RARP协议发出征求⾃⾝IP地址的⼴播请求,然后由RARP服务器负责回答。
RARP协议⼯作流程:
(1)给主机发送⼀个本地的RARP⼴播,在此⼴播包中,声明⾃⼰的MAC地址并且请求任何收到此请求的RARP服务器分配⼀个IP地址;
(2)本地⽹段上的RARP服务器收到此请求后,检查其RARP列表,查该MAC地址对应的IP地址;
(3)如果存在,RARP服务器就给源主机发送⼀个响应数据包并将此IP地址提供给对⽅主机使⽤;
(4)如果不存在,RARP服务器对此不做任何的响应;
(5)源主机收到从RARP服务器的响应信息,就利⽤得到的IP地址进⾏通讯;如果⼀直没有收到RARP服务器的响应信息,表⽰初始化失败。
6、路由选择协议
常见的路由选择协议有:RIP协议、OSPF协议。
RIP协议:底层是贝尔曼福特算法,它选择路由的度量标准(metric)是跳数,最⼤跳数是15跳,如果⼤于15跳,它就会丢弃数据包。OSPF协议:Open Shortest Path First开放式最短路径优先,底层是迪杰斯特拉算法,是链路状态路由选择协议,它选择路由的度量标准是带宽,延迟。
7、TCP/IP协议
TCP/IP协议是Internet最基本的协议、Internet国际互联⽹络的基础,由⽹络层的IP协议和传输层的TCP协议组成。通俗⽽⾔:TCP负责发现传输的问题,⼀有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到⽬的地。⽽IP是给因特⽹的每⼀台联⽹设备规定⼀个地址。
IP层接收由更低层(⽹络接⼝层例如以太⽹设备驱动程序)发来的数据包,并把该数据包发送到更⾼层--
-TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是否按顺序发送的或者有没有被破坏,IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(⽬的地址)。
TCP是⾯向连接的通信协议,通过三次握⼿建⽴连接,通讯完成时要拆除连接,由于TCP是⾯向连接的所以只能⽤于端到端的通讯。TCP提供的是⼀种可靠的数据流服务,采⽤“带重传的肯定确认”技术来实现传输的可靠性。TCP还采⽤⼀种称为“滑动窗⼝”的⽅式进⾏流量控制,所谓窗⼝实际表⽰接收能⼒,⽤以限制发送⽅的发送速度。
TCP报⽂⾸部格式:
TCP协议的三次握⼿和四次挥⼿:
注:seq:"sequance"序列号;ack:"acknowledge"确认号;SYN:"synchronize"请求同步标志;;ACK:"acknowledge"确认标志";FIN:"Finally"结束标志。
TCP连接建⽴过程:⾸先Client端发送连接请求报⽂,Server段接受连接后回复ACK报⽂,并为这次连接分配资源。Client端接收到ACK报⽂后也向Server段发⽣ACK报⽂,并分配资源,这样TCP连接就建⽴了。
TCP连接断开过程:假设Client端发起中断连接请求,也就是发送FIN报⽂。Server端接到FIN报⽂后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进⼊FIN_WAIT状态,继续等待Server端的FIN报⽂。当Server端确定数据已发送完成,则向Client端发送FIN报⽂,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报⽂后,"就知道可以关闭连接了,但是他还是不相信⽹络,怕Server端不知道要关闭,所以发送ACK后进⼊TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!
为什么要三次挥⼿?
在只有两次“握⼿”的情形下,假设Client想跟Server建⽴连接,但是却因为中途连接请求的数据报丢失了,故Client端不得不重新发送⼀遍;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。