计算机网络
2022-01-12 17:32:30 11 举报
AI智能生成
计算机网络笔记学习总结
作者其他创作
大纲/内容
计算机网络
应用层
主要协议
HTTP
HTTPS
https大致原理
1. 公司自己生成公司公钥和公司私钥,然提交公司公钥和网站信息去ca机构申请证书
2. ca机构将公司提交的网站信息通过hash(如MD5)算法生成摘要再通过ca私钥对摘要进行加密生成数字签名 最终将公司公钥+网站信息+数字签名整合在一起就是服务器证书
3. 浏览器请求发出tcp三次握手成功后服务器会将服务器证书发送给浏览器
4. 浏览器会对服务器证书进行验证,不是符合条件会中断访问,并显示警告提示,主要验证三点
1. 是否过期
2. 是否被吊销
3. 是否权威机构颁发的证书
在浏览器中有内置权威机构的根证书,这个证书里面包含ca公钥(这个公钥能解密ca私钥加密的内容)验证是否权威证书步骤如下: 1. 取出服务器证书中的网站信息进行hash得到摘要1 2. 取出服务器证书中的数字签名通过ca公钥解密得到申请时的摘要2 3. 摘要1和摘要2相等说明是权威机构颁发的证书
5. 如果上一步符合条件则会产生一个随机字符串并用服务器证书中的公司公钥加密发送给服务器端
6. 服务器再通过公司私钥解密那个随机字符串,后续就用这个字符串对称加密与浏览器交互的数据
通过java的keytool工具生成自签名证书
1. 生成服务器端密钥和证书仓库。(keytool工具在jdk的bin目录中,可把该工具考到其他目录进行生成操作,因为默认会在当前目录生成内容) keytool -genkey -alias server_cert -keysize 2048 -keypass 123456 -keyalg RSA -validity 365 -dname \"CN=localhost\" -storepass 123456 -keystore server.jks
2. 导出服务器端自签名证书 keytool -export -alias server_cert -keystore server.jks -storepass 123456 -file server.cer
3. 生成客户端密钥和证书仓库 keytool -genkey -alias client_cert -keysize 2048 -keypass 123456 -keyalg RSA -validity 365 -dname \"CN=localhost\" -storepass 123456 -keystore client.jks
4. 将服务器端证书导入到客户端授信证书仓库中,如果只需要单向认证,则到这一步就可以接受了,因为后面步骤是添加客户端证书到服务器端的信任证书仓库中 keytool -import -trustcacerts -alias securechat -file server.cer -storepass 123456 -keystore client.jks
5.生成客户端自签名证书 keytool -export -alias client_cert -keystore client.jks -storepass 123456 -file client.cer
6. 将客户端的自签名证书导入到服务器端的信任证书仓库中 keytool -import -trustcacerts -alias securechat -file client.cer -storepass 123456 -keystore server.jks
DNS
相关命令(windows)
nslookup
发送dns请求命令
ipconfig /displaydns
显示dns缓存
ipconfig /flushdns
清除dns缓存
FTP
SMTP
传输层(段)
TCP
可靠的,面向连接的协议,传输效率低,类似打电话
TCP段结构&三次握手四次挥手&常见问题
java发送TCP示例
服务器端代码
抓包测试的时候把该代码部署到虚拟机中启动,如果客户端和服务器端都在idea中启动的话会抓不到包在虚拟机中通过javac编译该类的时候记得先把类中的package network.tcp;去除
客户端代码
客户端中的服务端ip需改成实际的服务端ip
UDP
不可靠,无连接服务,传输效率高,类似群聊
java发送UDP代码示例
抓包测试参考TCP
UDP段结构
端口划分(占2字节)
0-->1023
公认端口号
HTTP(80)
FTP(21)
SSH(22)
SSH 命令的三种代理功能(-L/-R/-D)
DNS(53)
1024-->49151
注册端口号
主要是一些自建应用端口,如tomcat(8080)
49152-->65535
私有或动态端口
网络层(包)
ARP
该协议用于通过目标ip地址以广播的方式获取目标IP地址对应的MAC地址,发送时帧头部的目标MAC为FF:FF:FF:FF:FF:FF。当目标ip地址和自己不在同一网段时ARP包中的目标ip就是网关地址,然后网关响应自己的mac地址,ARP包不能穿越路由器
ARP请求结构
arp -a(查看ark缓存)
arp -d(清除ark缓存)
ARP欺骗
攻击者发送“无故ARP响应”来伪装其他设备,比如欺骗网关导致不能上网
免费ARP检查ip冲突
在设置ip之前生效时,会广播一个免费ARP包,这个包源ip和目标ip都是自己设置的那个ip,如果有谁响应这个ARP包,说明设置的这个ip和其他ip冲突了
IP
IP报文结构
IP地址划分
IP地址分类(通过IP地址第一个字节划分为5类)
A类(0开头)
1~126
0~(2^7-1) 即 0~127 由于不能为0或127(127为本机回环地址),所以范围是:1~126
B类(10开头)
128~191
(2^7)~(2^7+2^6-1) 即 128~191
C类(110开头)
192~223
(2^7+2^6)~(2^7+2^6+2^5-1) 即 192~223
D类(1110开头)
224~239
为组播地址
E类(1111开头)
240~255
保留地址
私有IP地址
10.0.0.0/8
10.0.0.0~10.255.255.255
172.16.0.0/12
172.16.0.0~172.31.255.255
192.168.0.0/16
192.168.0.0~192.168.255.255
广播地址和网络地址
单播&广播&组播
单播(unicast)
目的地址为单一目标
广播(broadcast)
发送给同一广播域中的所有设备,目标MAC为FF:FF:FF:FF:FF:FF,比如ARP包就是以广播的形式传输的。在ping一个广播地址时(如172.31.255.255/16)也会发送广播包,这些包的目标MAC也为FF:FF:FF:FF:FF:FF(ping广播地址是不需要先发送ARP包去查询MAC的)
组播(multicast)
发送给网络中的一组主机,可以穿过路由器,目标MAC为01-00-5E开头,IP地址为D类IP(224~239)
子网掩码
子网掩码速记
11111111 255 --> (2^8-2^0)11111110 254 --> (2^8-2^1)11111100 252 --> (2^8-2^2)11111000 248 --> (2^8-2^3)11110000 240 --> (2^8-2^4)11100000 224 --> (2^8-2^5)11000000 192 --> (2^7+2^6)10000000 128 --> (2^7)
子网划分
为什么要子网划分
1. IP地址空间的极大浪费,如B类地址默认掩码为255.255.0.0,意味着一个地址空间中有2^16个主机
2. 一个广播域中主机数据过于庞大,网络可能被广播报文消耗大量资源(如ARP广播)
示例题目1:192.168.1.100/29的子网号和广播号是多少?
29表示向主机位借了29-24=5位划分子网这5位一共可以划分2^5=32个子网,每个子网主机数为2^(8-5)=8(注意有效主机数是8-2=6)只需找到主机数倍数中最接近100的那个数即96,所以子网号为192.168.1.96,广播地址是192.168.1.103(96+8-1)
示例题目2:某公司获得了一个C类地址192.168.100.0/24,公司有四个部门,每个部门不超过50个人,应如何划分子网
每个部门不超过50人,那么划分后的子网主机数为不会超过52(加上网络地址和广播地址)找出2的多少次方刚好大于52,2^6=64符合该要求,那么说明只需要在原先的基础上向主机部分借8-6=2位即可满足要求最终总共会划分为2^2=4个子网:192.168.100.0/26192.168.100.64/26192.168.100.128/26192.168.100.192/26
路由
路由分类
直连路由(Direct)
静态路由(Static)
静态路由是指由管理员手动配置和维护的路由。静态路由配置简单,并且无需像动态路由那样占路由器的CPU资源来计算和分析路由更新,但缺点是当网络拓扑发生变化时不会自动适应改变,需要进行重新配置
静态路由示例
eNsp文件
带交换机的示例
缺省路由
一般家庭上网的主机都会有一条缺省路由,它的掩码为0(即网络位为0位表示匹配所有的目标网络地址),下一跳就是网关地址,如:0.0.0.0 0 192.168.1.1
动态路由
路由器使用路由协议从其他路由器获悉的路由,当网络拓扑发生变化时,路由器会动态更新路由信息
路由选择
1. 最长匹配原则
路由器中如果有多个匹配目的网络的路由条目,则路由器会选择掩码最长的条目,如:目的网络为192.168.1.18,192.168.1.0/24和192.168.1.0/16多符合要求,但会选择192.168.1.0/24
2. 当多条路由匹配长度相同时,则进一步根据协议优先级判断
协议默认优先级数值(取值越小优先级越高)
Direct=0
OSPF=10
Static=60
RIP=100
3. 如果优先级也相同,则再通过度量值(metric)判断
常用的度量值包括
跳数
带宽
时延
代价
负载
可靠性
负载分担
当源网络和目的网络之间存在多条链路时,可以通过等价路由来实现流量负载分担,这些等价路由具有相同的匹配长度、优先级和度量值。
路由备份
在配置多条静态路由时,可以修改静态路由的优先级,使一条静态路由的优先级高于其他静态路由从而实现静态路由备份,也叫浮动静态路由
DHCP
客户端通过DHCP获取IP地址过程
1. 客户端广播DHCP Discover消息
2. 服务器提供地址租约(Offer)
3. 客户端选择并轻轻地址租用(Request)
服务器确认将地址租用给客户端(ACK)
NAT
静态NAT
就是一个公网地址和一个私网地址进行绑定
华为命令(在命令后面输入?会有选项提示)
nat static enable(开启静态NAT)
nat static global 公网地址 inside 私网地址(配置一条静态的NAT)
display nat static(关闭NAT)
动态NAT
动态NAT基于地址池来实现私有地址和公网地址的转换,一个私网地址对应一个公网地址,当地址池中的地址被用尽后只能等待被占用的公网地址释放后,其他主机才能用它来访问公网
动态NAPT
NAT允许多个内网地址映射到地址池中同一个公网地址的不同端口
Easy IP(华为叫法)
允许将多个内网地址映射到网关出口地址上的不同端口(不需要地址池)
如:家庭,小型网吧,小型办公室中,这些地方内部主机不多,出口接口可以通过拨号的方式获取一个临时的公网地址
示例
同一个TCP连接的多次请求被NAT映射出去的公网端口是不变的,不过一个TCP连接长时间空闲(一般几分钟,不同的路由器有不同的默认值)则会发生变化每次请求TCP都会重置这个空闲时长
测试代码(客户端)
测试代码(服务端,注意服务端的代码最好在外网服务器,使得客户端访问的时候通过路由器NAT端口)
ICMP(虽然在网络层之上,但还是属于网络层协议)
在使用ping命令时传输层就是使用的该协议,在ping一个域名时,会先发送DNS请求查找域名对应的IP。然后发送ARP包查找MAC
ping xxx.xxx.xxx.xxx -n 5(设置发送包的个数为5)
如果-l 设置的值太大超过MTU,经过有的路由器是有防护机制的,比如ping www.baidu.com -l 5000 是ping不通的
ping xxx.xxx.xxx -i 2
设置TTL为2,每经过一个路由器TTL值-1,为0时会停止传送并回传包,回传包中会包含回传时的路由器IP根据这一特性可以追踪路由,比如设置-i 为1时就可以知道经过的第一个路由器IP(tracert命令就是根据这一原理实现的)
tracert -d xxx.xxx.xxx
路由追踪,也是基于ICPM协议,通过将TTL从1开始累加进行进行发包探测路由(一次会发三个包,所以由于一些路由器的防护机制会导致超时现象)
ping xxx.xxx.xxx
常见错误(windows)
请求超时
屏蔽了ping(如开启防火墙),或目标主机不在线
来自 xxx.xxx.xxx 的回复:无法访问目标主机
网关没有路由,没有获取到mac地址
PING: 传输失败。General failure.
没有配置网关或ping一个错误的ip会出现这种问题
链路层(帧)
以太网帧结构&常见问题
交换机
VLAN技术
概述
将一个物理局域网在逻辑上划分多个广播域
1VLAN=1广播域=1子网
广播域不会在VLAN之间转发,而是限制在各自的VALN中
不同的VLAN间的设备默认无法通讯,需要三层设备才能实现通讯
优点
有效控制广播范围
增强局域网的安全性
灵活构建虚拟工作组
简化网络管理
冲突域
冲突域即冲突发生的区域,像传统的以太网设备(如集线器),连接在这个集线器上的所有设备是一个冲突域,同一时刻只能有一台设备收发信号,如果两台设备同时发送或接收信号就会产生冲突(CSMA/CD协议就是用来处理这种冲突的)。现在基本已经被交互机替换了。交互机的冲突域是在交互机的同一端口,有几个端口就有几个冲突域,比如有ABCD四台设备连在同一交互机上,虽然A跟B通信的同时CD也可以通信,但BC同时和A通信就会在A端口上产生冲突。
广播域
所有连在交互机上的设备是一个广播域(不管是不是在同一网段),而路由器是可以隔离广播域的
物理层(比特)
0 条评论
回复 删除
下一页