计算机网络
什么是网络:
网络是硬件的物理连接,加速互联网协议构成。
构建一张覆盖世界的信息高速公路,方便了数据的传输与通信。
每天计算机都配置了一块网卡,网卡上有一个唯一标识mac
mac地址
每一块网卡出厂时都被烧写上了世界唯一的mac地址,长度为48位二进制,
通常发右12位16进制数表示。
OSI七层协议
应表会传网数物,至下往上。
物理层
连线通电信号,高低电平 010101
数据链路层
单纯的电信号,没有意义。
创造一套规则,以太网协议来规定电信号多少位为一组,美一组代表什么含义。
以太网协议(ethernet):
1.一组电信号构成一个数据 包/帧
2.每一数据帧分成:报头head和数据data两部分
数据帧:
head固定18个字节包含:
1.发送者/源地址 6个字节
2.接收者/目标地址 6个字节
3.数据类型 6个字节
*接入internet的设备都必须要有网卡,发送端的网卡地址是mac地址。
date最短46个字节,最长1500个字节
head字节长度加上data字节长度最短为64个字节,最长为1518个字节,
如果数据帧超出限制会进行分片发送
局域网广播通信
几台计算机接上一个交换机搭建一个局域网,局域网电脑之间通过mac地址通信,前提是需要拿到对方的mac地址。
计算机1发送一个信息给计算机2:
计算机1发送(源地址+目标地址+···)给交换机,交换机查看源地址记录下来,在查看目标地址,那么多台电脑它也不知道,它会复制n份,每一台电脑都发一份,
[FF.FF.FF.FF 源mac,目标mac···]每台电脑都解析这个信息,分析到目标mac是否与自己mac地址一样,如果一样则放回信息给交换机,交换机会记录下他的mac地址,建立通信。
交换机拥有mac地址学习功能,会记录下所有通信的计算机mac地址。
以太网包只能在一个局域网内发送,一个局域网是一个广播域。
网络层
网络把彼此隔离的局域网相互连通。规定一套网络地址(ip协议)区分不同的局域网。
IP协议:
1.IP协议定义的地址称为IP地址,采用ipv4,有32位2进制表示。
2.范围在0.0.0.0 - 255.255.255.255 (四段十进制法表示)
ip协议的两个主要作用
1.为每一台电脑分配ip地址
2.判断ip地址是否在同一个子网中
ip地址分成两部分
1.网络部分:标识子网 / 前 24位
2.主机部分:标识主机 / 后 8 位
ip协议的两个主要作用
如何判断两个ip是否在用一个子网钟,例如:
196.168.1.1 # 看的出吗?不懂怎么看?
196.168.1.210 # 不知道,那怎么办,引入子网掩码。
子网掩码
表示子网络的特征的一个参数(一个ip地址的形式),32位二进制数字。
网络位24位全是1 主机位8位全是0 255.255.255.0 11111111.11111111.11111111.00000000
ip地址与子网掩码做按位与计算
196.168.1.1 and 255.255.255.0
11000100.10101000.00000001.00000001
11111111.11111111.11111111.00000000
-----------------------------------
11000100.10101000.00000001.00000000 ----> 196.168.1.0
196.168.1.210
11000100.10101000.00000001.11010010
11111111.11111111.11111111.00000000
-----------------------------------
11000100.10101000.00000001.00000000 ----> 196.168.1.0
结果都是196.168.1.0它们是同一个子网中。
ip数据包直接放入以太网包的data部分(以太网头 ip头 ip数据)
分为两部分:
hend:长度20-60字节
data:最长65515字节
ARP协议(前提需要知道对方的ip)
广播的方式发送数据包,获取目标主机的mac地址
首先通过ip地址和子网掩码区分出所处的子网
同一子网:目标主机mac 目标主机ip
不同子网:网关mac,目标主机ip
发arp的包,尝试获取地址不是真正的直接发包过去。
例1:同一子网,获取目标主机mac地址
计算机1 :192.168.1.1 计算机2: 196.168.1.8
模拟发包:源地址 目标地址(不知道就发FF) 源ip 目标ip
1:计算1的mac地址 FF.FF.FF.FF.FF.FF 196.168.1.1/24 196.168.1.8/24 数据部分。
2:所有电脑都收到该arp包,碰到FF,大家都知道对象想获取自己的mac地址,如果目标ip 196.168.1.8 是自己,就返回mac地址
例2 :不同子网,获取网关mac
计算机1 :192.168.1.1 计算机2: 172.155.6.12
模拟发包:源地址 网关地址 (不知道就发FF) 源ip 目标ip
1:计算1的mac地址 FF.FF.FF.FF.FF.FF 196.168.1.1/24 172.155.6.12 数据部分。
2:所有电脑都收到该arp包,碰到FF,大家都知道对象想获取自己的mac地址,如果目标ip 172.155.6.12 是自己,就返回mac地址
*数据传给路由器发到外网
ip + mac 标识全世界唯一一台计算机
arp会将ip地址转换层mac地址(要么是局域网内的一台计算机的mac,要么就是网关的mac,不能是公网计算机的)
传输层tcp于udp
端口是应用程序与网卡关联的编号。端口只要求在本机唯一,0-65535,0-1024被系统应用占用
tcp协议-->可靠协议
tcp数据包没有长度限制,但是为了保证网络的效率,不会超过ip数据包的长度。以确保单个tcp数据包不必再分割。
以太网头--->ip头--->tcp头--->数据
udp协议-->不可靠协议
udp报头一共8个字节,总长度不会超过65535个字节,正好放进一个ip数据包
以太网头--->ip头--->upd头--->数据
tcp的三次握手与四次挥手
三次握手,建立双向通路。
第一次:客户端访问服务端,发送请求,服务端好人协议,谁访问都允许,同意访问。
第二次:服务端允许访问信息的的同时返回请求访问客户端,客户端收到访问结果(建立第一条通路),也收到访问的请求,允许服务端的访问。
第三次:客户端返回消息,服务端收到。(建立第二条通路)。
之后正常通信。
四次挥手
第一次: 客户端发信息给服务端断开联系请求。
第二次:服务端返回同意客服端断开服务端的请求。(断开第一条通路)
第三次:服务端把所有数据发送给客户端后发送断开联系请求。
第四次:客户端返回同意服务端断开服务端的请求。(断开第二条通路)
backlog半连接池
服务端的访问是在半连接池队列排序,先进先出,依次服务。
在高并发下,同时很多用户访问需要把半连接池的适当值调大。
syn洪水攻击:利用服务端的好人协议,制作大量的访问请求,访问一直爆满
udp协议-->不可靠协议
传数据快,不等对方回复就传数据
应用层 cocket套接字
cocket一个软件,基于网络通信的应用程序向下调用接口的工具。
网络通信dhcp
想要实现网络通信,每台主机需要具备的四要素:
1.本机的ip地址
2.子网掩码
3.网关的ip地址
4.DNS的ip地址
获取的方式:
1.手动配置-->静态获取
2.动态获取-->dhcp系统软件
dhcp开机获取步骤
以太网头--->ip头--->udp头--->dhcp数据包
1.以太网头
源mac--->目标mac(不知道,送广播:FF.FF.FF.FF.FF.FF)
2.ip头
两者都不知道,源ip:0.0.0.0---->255.255.255.255
3.udp头
ddp定义好了发送端为68,接收端为67.
数据包构造好后发出,以太网通过广播发送,通同一个子网钟全部计算机收到这个包,所有计算机分析包,只有DHCP知道ip 发送者0.0.0.0,接收者255.255.255.255是发给自己了,做出回应,
DNS解析
域名解析,负责域名解释成ip地址。
分级存放全部的ip地址
DNS查询方式
递归查询
迭代查询
递归查询
电脑-->本地域名服务器-->根服务器-->*域名-->权限域名
权限域名-->*域名-->-->根服务器-->本地域名服务器-->电脑
迭代查询
电脑-->本地域名服务器
本地域名服务器-->根服务器-->本地域名服务器
本地域名服务器-->*域名-->本地域名服务器
本地域名服务器-->权限域名-->本地域名服务器
本地域名服务器-->电脑
查询顺序:浏览器DNS缓存-->本地DNS缓存-->计算机HOST文件-->ISP DNS缓存-->递归or迭代
DNS缓存
在查询域名返回了正确的ip后,系统会将这个结果临时存放起来,n小时后失效,在这n小时内再次访问这个网站,系统会直接从本地电脑DNS缓存钟获取ip地址,而不必在去NDS服务器查询,变相加快网址解析。
DNS缓存分类
NDS被篡改:把所有域名解析都定到同一个位置,但是ip可以直接访问。
1.浏览器NDS(内存中):按一定频率缓存记录
2.本地操作系统DNS缓存(硬盘中)
3.本地HOSTS文件(硬盘中)
4.路由器指定的NDS(远程)
5.ISP的DNS(远程):运营商
6.根服务器(跨国):全球13台
通信流程
1.本机获取
* 本机ip地址 :192.168.1.10
* 子网掩码: 255.255.255.0
* 网关的io地址 192.168.1.1
* NDS的ip地址 8.8.8.8
2.
打开浏览器,访问www.Google
3.dns解析域名
4.http部分内容·····被包裹在长度为4960字节的TCP数据包中
5.TCP数据包设置端口
接收方(Google)的的默认端口是80,
本机1024-65535之间随机生成。
TCP数据包加上HTTP数据包,为49680个字节。
6.ip协议,tcp的数据包嵌入ip数据包,
本机ip 192.168.1.10
被访问者(Google)172.194.72.105
ip数据包加上TCP数据包,为5000个字节
7.以太网协议,ip数据包嵌入以太网数据包。
发送者mac地址,网关192.168.1.1(arp协议得到)
以太网数据包最大长度是1500字节
现在ip数据包为5000字节,加上以太网包5060个字节
ip包被分割成四个包
1. 以太网标头 ip标头 TCP数据包 1500个字节
2. 以太网标头 ip标头 TCP数据包 1500个字节
3. 以太网标头 ip标头 TCP数据包 1500个字节
5. 以太网标头 ip标头 TCP数据包 560个字节
8.服务端响应
经过多个网关的转发,(Google)的服务器收到这四个以太网数据包。
根据ip标头的序号,将四个包拼接,获取完整的tcp数据包,在读取http请求,按照http做出响应,在用tcp协议发回去。
本机接单http响应,网页显示,完成一次网络通信。