abstract
计算机网络基础
之前上学时候感觉网络学的挺透彻,毕业一年细节就忘得差不多,只能想起些专有名词。所以从网络上,教材上搜罗些网络基础来加深记忆。
网络层次划分
国际标准化组织(ISO)制定了OSI七层网络模型。
从下到上分别是:{(物理层)、(数据链路层)、(网络层)、(传输层)、(会话层、表示层、应用层)}
每一层接受下层服务并为上层提供服务,上三层面向用户。
在七层模型基础上又有TCP/IP四、五层模型。
物理层
- 主要功能:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
- 设备:调制调解器、集线器
数据链路层
主要功能:数据成帧,链路接入,流量控制,差错检测等
- 如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位;
- 如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;
- 以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。
- 数据链路层在不可靠的物理介质上提供可靠的传输。
- 设备:网路适配器(网卡)、交换机
网络层
数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信。
- 主要功能:路径选择、路由及逻辑寻址;
- 主要设备:路由器
- 主要协议:
- ARP协议(Address Resolution Protocol,地址解析协议);
- IP协议(Internet Protocol,因特网互联协议);
- ICMP协议(Internet Control Message Protocol,因特网控制报文协议);
- RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)。
传输层
根据通信子网的特性,最佳的利用网络资源,为两个端系统中主机到主机之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输。在这一层,信息传送的协议数据单元称为段或报文。
- 主要功能:传输层负责将上层数据分段并提供端到端的、
可靠的或不可靠的传输
以及端到端的差错控制和流量控制问题
; - 设备:网关
- 主要协议:
- TCP协议(Transmission Control Protocol,传输控制协议)
- UDP协议(User Datagram Protocol,用户数据报协议)
- 主要功能:传输层负责将上层数据分段并提供端到端的、
应用层
HTTP协议(Hyper Text Transfer Protocol)- 会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。
- 表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。
- 为操作系统或网络应用程序提供访问网络服务的接口。
- 主要协议:
- FTP(文件传送协议)
- Telnet(远程登录协议)
- DNS(域名解析协议)
- SMTP(邮件传送协议)
- POP3协议(邮局协议)
- HTTP协议(Hyper Text Transfer Protocol)
模型中的协议:
传输内容:
IP地址
IP地址由网络号和主机号组成。分为A、B、C、D、E五类地址;具体划分如下:
除了这五类地址还有一些特殊地址:
- 网络地址:主机号全0表示当前网络
广播地址:主机号全1表示当前网络广播地址(也称直接广播地址)
0.0.0.0:
255.255.255.255:该IP地址指的是受限的广播地址。受限广播地址与一般广播地址(直接广播地址)的区别在于,受限广播地址只能用于本地网络,路由器不会转发以受限广播地址为目的地址的分组;一般广播地址既可在本地广播,也可跨网段广播。例如:主机192.168.1.1/30上的直接广播数据包后,另外一个网段192.168.1.5/30也能收到该数据报;若发送受限广播数据报,则不能收到。
注:一般的广播地址(直接广播地址)能够通过某些路由器(当然不是所有的路由器),而受限的广播地址不能通过路由器。
回环地址:127.0.0.0/8被用作回环地址,回环地址表示本机的地址,常用于对本机的测试,用的最多的是127.0.0.1。
私有地址:
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
子网划分
IP/ICMP协议
IP协议
IP协议是将多个包交换网络连接起来,它在源地址和目的地址之间传送一种称之为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求。
IP不提供可靠的传输服务,它不提供端到端的或(路由)结点到(路由)结点的确认,对数据没有差错控制,它只使用报头的校验码,它不提供重发和流量控制。如果出错可以通过ICMP报告,ICMP在IP模块中实现。
ICMP协议
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息
。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
常用形式有两种:查询报文、控制报文。
查询报文
查询端获取请求,并获取对方相应。如ping命令
ping命令相当于在原生ICMP报文中增加时间和序号,根据返回相应的顺序和时间来增加准确性。
控制报文
源抑制报文
发送端发送大量数据时,可能会导致网络( 路由器 )过载,此时过载处可以向发送端发送源抑制的消息,让他降低发送速度。
终点不可到达
网络信息不能到达终点,就会给发送端发送一个目的不可到达的信息。告诉发送端可能是设备故障而引起关闭(情况之一)。然后这种又可以再次细分:
A、网络不可达 — 代码为 0,
B、主机不可达 — 代码为 1.
C、协议不可达 — 代码为 2.
D、端口不可达 — 代码为 3.
E、需要分段 - 代码为 4.( 必须把数据分段才能去到终点 )
超时
网络包超过设置的在网络中的生存时间,还没有达到。路由重定向
定义数据包的路由股则。因为大部分的时候,路由规则是通过相关协议算法生成的,有些时候重新定义过之后,会让这个数据包绕的更远。相见本文traceroute命令(windows系统为tracert命令)
ARP/RARP协议
ARP协议流程
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。
- 首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
- 当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP 地址
- 当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
- 源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
注意:广播(255.255.255.255)发送ARP请求,单播发送ARP响应。
RARP协议流程
RARP协议是根据mac地址获取IP地址的一个协议
发送端发送一个本地的RARP广播包,在此广播包中声明自己的MAC地址,并且请求任何收到此请求的RARP服务器分配一个IP地址。
本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址。如果存在,RARP服务器就给源主机发送一个响应数据包,并将此IP地址提供给对方主机使用;如果不存在,RARP服务器对此不做任何响应。
源端在收到从RARP服务器来的响应信息后,利用得到的IP地址进行通信;如果一直没有收到RARP服务器的响应信息,则表示初始化失败。
路由选择协议
上学时学到的路由选择协议有RIP协议、OSPF协议
- RIP协议:
- OSPF协议:
TCP/IP协议
TCP/IP协议是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。
歪,你在吗(甲方不知道乙方在不在)
嗯嗯,我在(乙方知道甲方在找自己,乙方不知道甲方能不能接收到回应)【甲方确认乙方】
在那我就开始说了(甲方知道乙方在,并且告诉乙方收到了他的回应)【乙方确认甲方】
双方确认的基础上进行可靠连接。
- 我听到一个消息,巴拉
- 嗯嗯,你继续说
- 巴拉巴拉
- 嗯嗯,你继续说
- 巴拉巴拉巴拉
- ??? 怎么不回了?巴拉巴拉巴拉
连接意外断开情况
为了防止漏掉信息,结束对话更是谨慎
- 甲:我没有要说的了(停止发送数据)
- 已: 嗯嗯(我收了你不发信息的通知了)【已方知道甲方不发消息了】
- 已: 我也没有要说的了(停止发送数据)
- 甲: 拜拜【甲方也知道乙方不再发消息了】
由此可见,TCP协议是建立在双方完全确认的情况下进行的计算机程序之间的端到端的连接。
UDP协议
ip协议是不可靠的,邮局到邮局的传输,UDP则像是对IP协议的接口话,实现了,邮筒到信箱之间的不可靠传输。
ping命令
TTL : 数据包在网络中生存时间,也就是通过数据被路由器转发的次数,没转发一次就减一。知道为 0 的时候就抛弃。
windowns系统只会请求4次,linux系统会一直请求。
因为是基础,暂不研究详细参数。
traceroute命令
traceoute 有点像是在不断试错的意思,windows系统为tracert命令。是用来侦测主机到目的主机之间所经路由情况的重要工具。Ping 我们知道是可以知道这条大路通不通的,traceoute 通过设置 TTL 知道到底是哪个路由器不通。
traceroute 的原理:它收到目的主机的 IP 后,首先给目的主机发送一个 TTL=1 的 UDP 数据包,而经过的第一个路由器收到这个数据包以后,就自动把 TTL 减 1,而 TTL 变为 0 以后,路由器就把这个包给抛弃了,并同时产生 一个主机不可达的 ICMP 数据报给主机。如此循环就可以知道所有的路由 IP 了。( ICMP 出错了就会回错误包 )
通常 Traceoute 的目的端口设置的是一个大于 30000 的值( 一般的应用端口号远小于这个数 )。所以如果回复的是 “端口不可达”,那就说明到达终点,否则这个信息就会超时。以此确保 消息是否到达终点。
traceoute 还有一个有意思的功能,就是确定 MTU(数据最大传输单元),traceoute 通常对数据不分段,就直接发送,如果如果遇到过程中某个路由转发,出现返回 ICMP 需要分段的错误,就把数据进行拆分,直到最后到达终点。就验证出 MTU。