1.对网络的基础认识
<1>.组网方式
1.网络互联:使用集线器将少量主机连在一起
2.局域网(LAN):使用交换机和路由器将主机连接,可以自由组合三种方式组网方式:<1>.交换机<2>.路由器<3>.交换机+路由器
3.
广域网(WAN):广域网和局域网知识相对的概念
例如:一个学校之间的网络就可以成为局域网,而一个国家,多个国家之间可以称为广域网,覆盖的区域不同
组网方式:公网上,网络结点组成,每一个结点可以是:
<2>.OSI七层模型
1.对协议的简单理解:本质上是数据格式的定义。而知名的数据格式,大家普遍遵循的规定,就属于协议
2.OSI七层模型:一种网络分层的设计方法论,比较复杂且不实用,落地几乎都是TCP/IP四层,五层模型
<3>.TCP/IP五层(四层模型)
五层模型:除去OSI的表示层和会话层
四层模型:除去OSI的表示层,会话层和物理层
注意:
应用程序实现对应用层的封装分用
对于一台主机,它的操作系统内核实现了从传输层到物理层的内容;(四.层封装分用)对于一台路由器,它实现了从网络层到物理层;(下三层封装分用)
对于一台交换机,它实现了从数据链路层到物理层;(下两层分装分用)
对于集线器,它只实现了物理层;
<4>.对封装分用的理解
1.封装:发送数据时,从高到低的顺序,按照对应的网络分层协议对数据进行包装
例如:
2.分用:封装的逆过程:接收数据时,从低到高的顺序,按照对应的网络分层协议,解析数据
例如:
2.网络数据传输
<1>局域网
(1)认识IP和MAC
IP:
IP的格式:xxx.xxx.xxx.xxx
IP由四个部分组成,每个部分都是0-255.
网络号:前三个部分组成(用来标识网段),前三个部分相同,标识在一个网段
主机号:最后一个部分用来标识主机号
IP分为A-E五大类,部分范围是局域网IP,部分是广域网IP,可以根据规范,知道某个IP是局域网IP还是公网IP
注意:局域网内(局域网IP):网段唯一,同一个网段,主机号唯一
公网(公网IP):公网IP是唯一的
MAC:
和网卡硬件绑定的,全球唯一
作用:网络数据传输定位网卡硬件的位置,一个主机可能有多个网卡(例如蓝牙连接,无线连接,有线连接的网卡),电脑硬件定位数据发送的目的位置只能使用MAC
总结:
IP地址描述的是路途总体的起点和终点。(给人用的,网络主机的逻辑地址)
MAC地址描述的是路途上的每一个区间的起点和终点(给电脑硬件用的,网络主机的物理地址)
(2)网络数据传输的特性
1.IP,MAC起的作用
2.封装分用——发送数据从高到低封装,接收数据从低到高分用
3.结合IP,MAC,理解网络数据传输,本质上是一跳一跳的传输数据
首先根据目的主机发送http请求,从源IP发送数据到目的IP
从源MAC(1)发送数据到目的MAC(2),然后MAC(2)对数据进行封装和分用,再以MAC(2)为源MAC,目的MAC为MAC(3),以此,发送数据到最终目的MAC。
注意:接收数据报的
五元组:
源IP,目的IP,源端口,目的端口,协议号
IP:标识主机,给人用
源IP:发送数据的主机
目的IP:接收数据的主机
端口号:
源端口:标识发送数据的进程
目的端口,标识接收数据的进程
协议号:进程需要封装,解析数据报的数据格式
DNS协议:
作用:域名转IP
主机/路由器:都存在DNS缓存
域名查询的方式:上图树形结构从下往上查找(缓存,域名服务器)。
先在主机/路由器的DNS缓存中找,如果找不到,依次向上
特殊的IP,域名:本机IP为127.0.0.1,本机域名为localhost
(3)网络数据传输流程
ARP/RARP协议:
主机中有ARP缓存表
ARP协议:IP转MAC
RARP协议:MAC转IP
注意:交换机和集线器自己是没有MAC地址的,都是通过转发(不会修改源MAC和目的MAC)
交换机有MAC地址转换表,可以根据MAC找到对应的端口,而集线器没有这个功能
1)网络互联的方式
首先介绍集线器:如上图,网络数据传输时,直接转发到其他所有端口(工作在物理层)
网络数据传输的过程:
1.ARP缓存表找到了
1.主机1发送数据到主机3(http://主机3:80)
2.主机1查找本机的ARP缓存表,根据ARP协议,找到目的MAC
3.数据报由主机1,发送到集线器(数据报中的源MAC(主机1),目的MAC(主机3)真实的数据报
4.集线器转发数据报到除主机1的其他所有相连的主机(主机2,主机3)
5.主机2接收:数据报中,目的MAC不是我,丢弃
主机3接收,数据报中,目的MAC是我,接收
目的IP是我,交给对应端口处理,如果不是我,执行上述网络传输(一跳一跳的过程)
2.ARP缓存表没找到
1.主机1发送数据到主机3,http://主机3:80
2.主机1查找本机的ARP缓存表,发现找不到
3.主机1发送广播数据报(非真实数据,只是要求对应主机返回MAC:我要IP为主机3的MAC,谁是主机3,快告诉我)
注意:
4.集线器转发到主机2,主机3
5.主机2接收:要求的IP不是我,丢弃
主机3接收:要求的IP是我,返回我的MAC
6.主机1收到主机3的返回数据(IP,MAC)更新自己的ARP缓存表
7.主机1发送真实的数据到主机3
注意:使用集线器的缺陷
网络冲突,这样构成的网络区域叫冲突域/碰撞域(例如,房间里有多个人说话,那么其中某一个人说话就听不清楚了)
2).局域网交换机组网的方式
首先介绍交换机,交换机的作用:
MAC地址转换表:保存连接的主机MAC和端口的映射,目的MAC是谁,直接转发到对应的端口(不像集线器,发送到所有端口),不会产生冲突域。
1.主机1发送数据到主机3,http://主机3:80
2.主机1查找本机的ARP缓存表,如果找到,主机1发送数据到主机3。如果找不到,发送广播数据报,让IP为主机3的告诉我,你的MAC
3.交换机转发到其他所有端口(广播)
4.主机2丢弃,主机3返回自己的MAC
5.交换机知道主机3的MAC,主机1知道主机3的MAC(更新ARP缓存表)
注意:上述五个步骤,都是根据IP找MAC,和集线器的流程相似,下面的步骤时根据MAC找端口
6.主机1发送真实数据给交换机
7.交换机查找自己的MAC地址转换表,通过MAC找端口,发送数据到对应的端口
8.主机3接收,目的MAC是我,目的IP也是我
这种网络数据传输的方式就像:先问张三的手机号,再打电话给张三,对别人没有影响
3)局域网交换机+路由器组网的方式
注意:单独由路由器组网的方式,和上述由交换机单独组网的方式相同
首先介绍路由器,这里介绍两种:
<1>LAN口连接局域网,为主机分配局域网IP,分配的局域网IP都是一个网段(路由器下连接多个主机的类型)
路由器还有个网卡:绑定局域网的IP,和下面连接的主机进行信息交互用的
<2>LAN口是网卡。每个LAN口都可以连接类似交换机组网的方式
主机上的网络信息:
第二种路由器组网方式:
1.主机1发送数据到主机2:http://192.168.2.y:8080/xxx
2.通过目的IP+子网掩码,计算出目的主机和本机是否在一个网段
3.如果是,不需要使用路由器,和上述使用交换机组网方式一样
4.如果不是,表示我主机1和交换机处理不了,要发送给网关转发(网关就类似于IP的管理者,能查询其他主机的IP)
5.数据报发送给网关设备
目的MC:通过路由器网关的IP在主机1的ARP缓存表中,获取网关的MAC
6.路由器接收到数据报,分用:物理层到网络层,网络层分用,所有可以获取到目的IP
7.路由器查找自己的ARP缓存表(IP找MAC)
8.找不到,路由器发广播,主机2在哪,告诉我你的MAC
9.有了MAC,直接发到主机3
<2>广域网传输流程
1.NAT和NAPT
NAT协议:局域网IP映射公网IP
NAPT协议:局域网IP+局域网端口映射----->公网IP+公网端口
2.传输流程
结合上图,理解广域网传输流程
首先:主机1发送http://www.baidu.com网络流程
传输流程
1首先主机1发送http请求,使用DNS协议:进行域名转IP
域名转IP:首先在本机DNS缓存表找,如果找不到---->向上查找------>如果根域名服务器也找不到,表示公网上没有该域名的主机
2.找到IP,数据报IP部分,PORT部分都有了:
3.根据目的IP计算是否和主机在同一个网段
主机1的IP+子网掩码计算出------>主机1的网段
目的IP+子网掩码计算出------->目的主机的网段
通过上述计算,判断目的IP和主机是否在同一个网段
4.如果是同一个网段,和局域网传输一样
如果不是同一个网段:发送数据到网关
找网关的MAC:
5.找到网关的MAC之后,将http数据重新封装,交由交换机转发
交换机转发:在MAC地址转换表(MAC映射端口),通过目的MAC找端口(交换机的屁股口)
注意:这个过程没有封装和分用
注意:前五个步骤,和路由器组成的局域网传输流程一样参考:局域网传输
6.路由器接收,分用数据报
注意:路由器会根据最短路径算法,计算出下一个发送数据的设备,会离目的IP更近一步
7.
上述步骤之后,数据报由局域网到广域网进行传输
路途中的设备:
8.
数据报到达百度服务器之后
9.数据由百度服务器返回,路途上经过的设备传输流程和步骤七相同(但是不一定是原路返回)
10.路由器1接收响应数据(对接收的数据进行分用,修改,封装)
11.
之后的步骤,和局域网传输相同
主机接收数据报,分用
3.UDP和TCP
<1>UDP协议
UDP协议端格式:
16位UDP校验和作用:类似于藏头诗,双方约定好的校验数据,进行数据校验
UDP的特性:
1.无连接:没有建立连接就发数据
2.不可靠:没有类似TCP保证数据传输的安全机制,(连接管理机制,确认应答机制,超时机制
,)效率更高。
3.面向数据报:只能一次接收(系统级别的操作:调用系统函数)
4.没有发送缓冲区(发了消息就不管),有接收缓冲区
5.数据最大为64k
发送缓冲区:主机1发送完数据,发出之后就不管了
接收缓冲区:
如果发送端调用一次s