计算机网络


网络是由物理链接介质和互联网通信协议组成.

一.网络通讯基本原理

1)主机之间需要有传输介质.(网线.光纤.蓝牙.WiFi等)
2)主机上必须有网卡设备
---可以将二进制信息转换为高低电压,信号的调制过程
---可以将高低电压转换为二进制信息,信号的调解过程
3)多台主机之间需要协商速率
100 Mbps ----100 Mbit per second 每秒钟传输100M比特信息
1bit = 二进制的0 或者 1
网络的数据单位是 bit
磁盘的数据单位是 Byte
1bit = 1/8Byte 1Byte = 8bit



二. 网络基础硬件介绍

交换机:
在一个网络中实现多台主机之间的通讯 ,一台交换机所连接的所有主机构成网络,成为局域网.

实现通讯:
1) 主机上要有相应的mac地址(物理地址) 由12位6进制数组成
物理地址: ‎68-F7-28-90-4A-C9
2) 利用交换机进行通讯, 需要借助广播方式进行通讯
广播的产生有时会影响主机性能
补充:通讯一定是有去有回的
 
 
路由器:
实现不同局域网主机之间的通讯

实现通讯
1) 主机上要有相应的IP 地址(逻辑地址) 用十进制表示
IP 地址的组成: 网络信息(局域网标识)+主机地址信息
2) 需要借助路由器的路由表实现通讯.

路由表的信息是如何生成的?
1)利用直连网络环境自动生成
2)利用手工配置方式(静态路由配置)
3)利用路由协议动态生成(动态路由配置)
 
网关: 一个主机想访问其他网络主机的必经之路
路由器的接口: 网关接口
路由器的地址: 网关地址



三. OSI七层协议

互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层

 

每层运行常见物理设备

 

 

 


OSI七层协议数据传输的封包与解包过程 


 

四.TCP/IP 五层模型详解

首先,用户感知到的只是最上面一层应用层,自上而下每层都依赖于下一层,所以我们从最下一层开始切入,比较好理解

 每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件


4.1.物理层

物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0


4.2.数据链路层

数据链路层的功能:定义了电信号的分组方式.因为单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思?

以太网协议

ethernet规定

  • 一组电信号构成一个数据包,叫做‘帧’
  • 每一数据帧分成:报头head和数据data两部分
       head                        data                             

 

 
head包含:(固定18个字节)

  • 发送者/源地址,6个字节
  • 接收者/目标地址,6个字节
  • 数据类型,6个字节

data包含:(最短46字节,最长1500字节)

  • 数据包的具体内容

head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送

 

mac地址:

ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址

mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)


广播:

有了mac地址,同一网络内的两台主机就可以通信了(一台主机通过arp协议获取另外一台主机的mac地址)

ethernet采用最原始的方式,广播的方式进行通信,即计算机通信基本靠吼

交换机的工作原理

说到MAC地址表,就不得不说交换机的工作原理,因为交换机是根据MAC地址表转发数据帧的。在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据这张表负责将数据帧传输到指定的主机上的。

交换机在接收到数据帧以后,首先、会记录数据帧中的源MAC地址和对应的接口到MAC表中,接着、会检查自己的MAC表中是否有数据帧中目标MAC地址的信息,如果有则会根据MAC表中记录的对应接口将数据帧发送出去(也就是单播),如果没有,则会将该数据帧从非接受接口发送出去(也就是广播)。

交换机具有动态学习源MAC地址的功能,并且交换机的一个接口可以对应多个MAC地址,但是一个MAC地址只能对应一个接口。交换机动态学习的MAC地址默认只有300S的有效期,如果300S内记录的MAC地址没有通信,则会删除此记录


4.3. 网络层

网络层功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址

IP协议:

  • 规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示
  • 范围0.0.0.0-255.255.255.255
  • 一个ip地址通常写成四段十进制数,例:172.16.10.1

IP地址分成两部分

  • 网络部分:标识子网
  • 主机部分:标识主机

注意:单纯的ip地址段只是标识了ip地址的种类,从网络部分或主机部分都无法辨识一个ip所处的子网

例:172.16.10.1与172.16.10.2并不能确定二者处于同一子网

子网掩码

所谓”子网掩码”,就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。(比如,IP地址172.16.10.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0)。

知道”子网掩码”,我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。

 

比如,已知IP地址172.16.10.1和172.16.10.2的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,

172.16.10.1:10101100.00010000.00001010.000000001

255255.255.255.0:11111111.11111111.11111111.00000000

AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0

172.16.10.2:10101100.00010000.00001010.000000010

255255.255.255.0:11111111.11111111.11111111.00000000

AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0

结果都是172.16.10.0,因此它们在同一个子网络。

总结一下,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。


IP数据包

ip数据包也分为head和data部分,无须为ip包定义单独的栏位,直接放入以太网包的data部分

 

head:长度为20到60字节

data:最长为65,515字节。

而以太网数据包的”数据”部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成几个以太网数据包,分开发送了。

以太网头                ip 头                                     ip数据                                

 


 

 ARP协议

通信分为两类:
局域网内
跨局域网
arp协议功能:广播的方式发送数据包,获取目标主机的mac地址

arp协议获取要目标的mac地址,是通过目标IP地址来找到的,所有两台主机ip必须是已知的

 已知两台主机1和2的IP地址和子网掩码,arp协议如何拿到目标Mac?
第一种情况:
两台主机在同一个网段内即在同一个局域网里
   源Mac地址                           目标Mac地址                     源IP地址              目标IP地址
主机1的Mac地址                FF-FF-FF-FF-FF-FF                 主机1                     主机2
所有主机都会收到这个ARP包,只有主机2发现目标IP地址是自己,然后就会自己的Mac地址

第二种情况:
两台主机不在同一个网段内,即跨局域网
    源Mac地址                         目标Mac地址                     源IP地址              目标IP地址
主机1的Mac地址               FF-FF-FF-FF-FF-FF                  主机1               网关的IP地址
所有主机都会收到这个ARP包,只有网关会返回自己的Mac地址

IP地址+Mac地址可以标识全世界唯一一台计算机


4.4传输层

传输层功能:建立端口到端口的通信
端口范围0-65535,0-1023为系统占用端口
TCP协议: 传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议
UDP协议: 用户数据报协议,一种无连接的传输层协议.
 
控制字段:
SYN(1):请求建立连接控制字段
FIN(1):请求断开连接控制字段
ACK(1):数据信息确认控制字段
TCP 三次握手过程:
1.第一个握手:
主机A发送SYN(1)请求建立连接控制字段,发送seq序列号信息(假设为x),第一个数据包的系列号默认为0
2.第二次握手:
主机B发送SYN(1)请求建立连接控制字段,同时还会发送ACK(1)确认控制字段
发送seq序列号信息为(y),还会发送ack确认号(x+1)信息,对上一个数据序列号进行确认.
3.第三次握手:
发送ACK(1)确认控制字段,发送seq序列号信息(x+1),发送ack确认号(Y+1)信息.

TCP三次握手过程图: 




TCP四次挥手过程图:




4.5 应用层

应用层功能:规定应用程序的数据格式。

socket套接字
socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。

五.网络通信实现

想实现网络通信,每台主机需具备四要素

  • 本机的IP地址
  • 子网掩码
  • 网关的IP地址
  • DNS的IP地址

获取这四要素分两种方式

1.静态获取

即手动配置

2.动态获取

通过dhcp获取

(1)最前面的”以太网标头”,设置发出方(本机)的MAC地址和接收方(DHCP服务器)的MAC地址。前者就是本机网卡的MAC地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。

(2)后面的”IP标头”,发出方的IP地址设为0.0.0.0,接收方的IP地址设为255.255.255.255。

(3)最后的”UDP标头”,设置发出方的端口和接收方的端口。这一部分是DHCP协议规定好的,发出方是68端口,接收方是67端口。

 

这个数据包构造完成后,就可以广播发送,同一个子网络的每台计算机都收到了这个包。当看到发出方IP地址是0.0.0.0,接收方是255.255.255.255,于是DHCP服务器知道”这个包是发给我的”,而其他计算机就可以丢弃这个包。

接下来,DHCP服务器读出这个包的数据内容,分配好IP地址,发送回去一个”DHCP响应”数据包。这个响应包的结构也是类似的,以太网标头的MAC地址是双方的网卡地址,IP标头的IP地址是DHCP服务器的IP地址(发出方)和255.255.255.255(接收方),UDP标头的端口是67(发出方)和68(接收方),分配给请求端的IP地址和本网络的具体参数则包含在Data部分。

新加入的计算机收到这个响应包,就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等等参数


DNS
什么是dns:domain name server域名解析服务,负责把域名解析成ip地址.它主要的作用就是将人们所熟悉的网址 (域名) “翻译”成电脑可以理解的 IP 地址,这个过程叫做 DNS 域名解析.

dns的查询方式
递归查询

主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,
那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。
因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。


迭代查询

本地域名服务器向根域名服务器的查询的迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,
要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,
让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。
最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。

dns查找顺序:
浏览器dns缓存=》本地系统dns缓存=》本地计算机hosts文件=》本地dns缓存=》递归or迭代搜索

清除DNS缓存

查看Windows系统本地dns缓存命令:ipconfig /displaydns

清除Windows系统本地dns缓存命令:ipconfig /flushdns

谷歌浏览器清除方法如下:打开浏览器,访问如下地址 chrome://net-internals/#dns 点击 clear host cache,就清除了浏览器的dns缓存.

 

六. IP地址和子网划分

ip地址分为五大类:

特殊ip地址
1. 网络地址:用于表示网络本身,具有正常的网络号部分,而主机号部分全部为0的ip地址称之为网络地址.

2. 广播地址:用于向网络中的所有的设备进行广播。具有正常的网络号部分,而主机号部分全为1(即255)的ip地址称之为广播地址.

3. 有限广播地址:指的是32位全位1(即255.255.255.255)的ip地址,用于本网广播.

4. 回送地址:网络地址不能以十进制的127作为开头,在地址中数字127保留给系统作为诊断用,称为回送地址,如127.0.0.1用于回路测试

5. 私有地址:只能在局域网内使用,不能在公网上使用的ip地址称为私有ip地址,私有ip地址有:

  (1). 10.0.0.0~10.255.255.255,表示A类地址
  (2). 172.16.0.0~172.31.255.255,表示B类地址

  (3). 192.168.0.0~192.168.255.255,表示C类地址

6, IP地址0.0.0.0:已经不是真正意义上的ip地址,它表示的是所有不清楚主机和目的网络,这里的不清楚指的是在本机路由表里没有特定条目指明如何到达.

子网掩码
子网掩码用于识别ip地址中的网络地址和主机地址,子网掩码也是32位二进制数字,在子网掩码中,对应于网络地址部分全用1表示,主机部分全用0表示.

子网划分

子网划分是借用ip地址的若干主机位作为网络位,将原来的网络分为若干个彼此隔离的子网.

子网划分的优点

  • 减少网络流量
  • 提高网络性能
  • 简化管理
  • 易于扩大地理范围 

子网划分后,站在三层的角度属于不同的局域网,但是他们都是连接在同一台交换机上,站在二层的角度,就是同一个局域网,数据包的广播还是会广播到该交换机所有的端口,所以,子网划分通常与vlan配合使用.

vlan

vlan的作用

  1.可以不用通过路由器来隔离不同广播域  

  2.可以突破地理位置的限制,在逻辑上划分出不同的广播域

VLAN 交换机的端口分为两类:
Access port:这些端口被打上了 VLAN Tag,离开交换机的 Access port 进入计算机时会把 VLAN Tag去掉,计算机的数据帧进入这些端口时会被打上 VLAN Tag。Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口.

Trunk port:可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口.

VLAN的类型
1.基于端口的vlan 同一个 VLAN 中的两台计算机需要通信的话,需要在两个交换机之间连两根线
2.Tagged VLANs 一根线就可以了实现跨交换机的同VLAN 内的计算机互相通信

原文地址:https://www.cnblogs.com/allenzhu128/p/13808387.html