概述:互联网的本质:物理连接介质 + 一系列网络协议。
协议分为OSI七层或tcp/ip五层或tcp/ip四层:
一、物理层:光缆、电缆、双绞线、无线电波等用于传递电信号:
发送(电信号)高低电压,高电压代表数字1,低电压代表数字0
二、数据链路层:定义电信号的分组方式,目前的统一标准是以太网协议
-
Ethernet以太网协议规定:
每一组电信号构成一个数据包,叫做“帧”
每一帧分为:head和date两部分
-
源地址和目标地址:接入网络的设备的网卡地址,即MAC地址。
MAC地址:每个网卡出厂时具有唯一一个mac地址,由12位16进制数表示,前6位代表厂商编号,后6位流水号:
-
广播:有了mac地址,同一网络内的两台主机就可以进行通行了。Ethernet采用广播的方式进行通信,即计算机通信基本靠吼:
假设同一网络内,有PC1 PC2 PC3 PC4四台主机,PC1要和PC4通信,那么PC1按照广播的方式发送数据包(PC1如何获取PC4的mac地址?:arp协议(网络层中)),同一网络的所有主机,如PC2, PC3都会收到这个包,拆开查看head中的目标地址是不是自己的MAC,如果是就响应。
三、网络层:IP协议
1. ethernet协议解决了局域网(子网)内的计算机通信问题,IP协议用来标识PC所在的子网。
- ip地址由32位二进制表示,但通常写成四段十进制数,比如:172.16.10.1
- 范围0.0.0. ~ 255.255.255.255
- 子网掩码是表示子网特征的一个参数,形式上等同于IP地址。它的网络部分全部为1,主机部分全部位0。比如IP地址172.16.10.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000(即十进制255.255.255.0)
2. 如何根据ip地址和子网掩码来判断两台PC是否在同一网络?
比如PC1的的IP是172.16.10.1,PC2的IP是172.16.10.2,它们的子网掩码都是255.255.255.0
将各自的IP地址与子网掩码进行AND运算(两个数位都为1,运算结果为1,否则为0)
tips: 二进制和十进制转换可以用WIN10自带的计算器。
-
IP数据包:head + data,直接放入以太网的data部分
-
ARP协议:基于IP地址解析MAC地址
- 工作方式,每台主机的IP都是已知的的,通过IP和子网掩码来判断通信的两台主机是否是同一子网。
- 如果在同一子网,就通过广播的方式发送数据包,同一子网的所有计算机都收到并拆包,如果目标IP是自己,就响应自己的MAC地址。有了目标机器MAC地址,就可以进行通信。
- 如果不在同一子网,则在目标MAC处填入FF:FF:FF:FF,网关响应自己的MAC,获取了网关MAC后,将数据包发给网关,由网关与目标主机的网关进行路由通信,将数据包发出去。
四、传输层:TCP/UDP协议:基于端口,能标识一台机器上的应用程序 ,建立端口到端口的通信
- 端口范围:0 ~ 65535,0 ~1023为系统占用端口
- TCP 可靠传输,UDP不可靠传输
- 数据包,放入IP的data部分
- TCP的三次和四次握手:
五、应用层:http、ftp
- http数据包封装用户数据
- socket套接字:
位于应用层和传输层之间的一个抽象层:把TCP/IP层复杂的操作抽象为几个简单的接口,供应用层调用以实现网络通信
六、其他
- DHCP:为网络中的计算机分配IP地址、子网掩码、网关地址、DNS服务器等信息。
- DNS:递归+迭代查询。知道域名并不能直接通信,需要将域名解析为IP地址
- 用户上网流程