这里是按找我的直觉一步一步完善网络,由物理到主机,更好的理解网络
连接方式分为有线和无线
而由于范围增大,连接又需要不同的第三方帮助
有线
最开始是直接电线传输,通过电流电压表示数据;然后变成了光纤传输,通过光脉冲表示数据
物理信号通过调制和解调,与数字信号转换,从而实现数据传输.执行这一过程的叫做调制解调器,即光猫
科普:
脉冲的频率即传输速度的上限,因为光子更小,所形成的波频也更大,于是光纤取代了电线
另外一种就是频率就是cpu的时钟频率,cpu是按时钟信号来执行指令的,所以频率越高,cpu就越好.这种频率由晶振产生
石英晶体排列,让其在施加外力后(此处为电场力),能够由于弹性产生特定频率的震动,一般频率很高,我们将其分频后作为时钟信号
无线
原理 : 将数据调制成射频信号,电磁波低于100KHZ时会被地表吸收,高于100kHZ的电磁波称为射频,而不同频率传输不同的信息,这样信息才不会混乱
规范 : 所以不同射频需要进行规范,即进行分配,各国都留出ISM频段(Industrial Scientific Medical Band)免费给这几种行业使用,只要发出功率不超过1W从而不干扰其他频段的就可以了
应用 : 2.4GHz为各国共同的ISM频段。因WLAN、bluetooth等无线网络,均可工作在该频段上.而这些信号可以根据环境自动调节频率以防止冲突.另外,电视红外遥控器频率为38kHZ,汽车遥控器一般为433.92MHZ和315HZ
信号屏蔽器就是发送与移动通信相同频段的射频干扰通信
wifi是特殊的WLAN(wireless LAN)
主机间连接
直接连接 : 由前面有先或无线建立连接
间接连接(局域网) : 当距离和设备增加时,则需要第三方来帮助,即交换机,物理地址(mac)与交换机的LAN端口绑定,主机的网卡有唯一mac地址
间接连接(广域网) : 而如果需要更大距离,则需要在交换机上加一条线连接到公网,即路由器,路由器有唯一公网ip地址
程序间连接
在主机内,程序内的socket通过与端口绑定
通过操作系统的ARP协议将ip转换成mac,然传给交换机
物理层 : 物理信号的直接传输
数据链路层 :由于物理设备的不可靠性,就出现了按帧进行传输(数据链路层),即把数据进行分组加上校验
网络层 : 不同网络的主机需要定位,即在网络中寻址,路由.这一步传输的是IP数据报,而也就是到了这一层,才实现了让任意两台主机传输数据
传输层 : 但网络层的直接传输并不可靠,所以出现了以IP协议为基础封装的TCP/UDP协议,提供更可靠和更方便的传输
应用层 :
会话层 : 数据最终会传入进程,然后建立进程间会话
表示层 : 将二进制解密,翻译成应用的格式,如文本,图片等
应用层 : 应用数据 HTTP,FTP,SMTP,DNS,TELNET
这其实就是TCP/IP模型
如果将应用层细分,就是OSI模型
另外,数据传输时,常会进行加密和压缩处理
由mac和ip确定位置,由路由寻找位置
由ip协议为基础的tcp/udp协议进行传输数据
二者都是用来定位主机的,mac用在局域网中,ip用在广域网中
mac是物理世界地址,由设备中的网卡在出厂时唯一标识
格式 : 如BC-6E-E2-22-26-87
,由``6*32bit`组成,每个32bit由2十六进制表示,前三个表示厂商序列号(IEEE分配),后三个表示产品序号
mac可通过特定手段修改
组成
IP地址是在网络中的地址,分为前后两部分,前面部分为网络号,后半部分为主机号
两个部分通过子网掩码进行区分,子网掩码由连续的1和连续的0构成,如255.255.255.0
,1的部分对应为网络号,后面为主机号,因为子网掩码全为1,也经常用1的个数来表示子网掩码,如192.168.0.1/24
表示子网掩码为255.255.255.0
特殊的IP
网络地址 : 用来表示子网,主机号全为0
广播地址 : 用来向子网广播,主机号全为1
受限广播地址 : 255.255.255.255, 不能经过路由器
回环地址 : 127.0.0.1/8,用来表示本机地址,常用于测试
分配
私有IP : 我们的IP都是局域网内的IP,很多时候都是192.168.x.x
,足以容纳254个终端,一般够用了,而前面由 IANA这个机构指定为私有地址
动态分配 : 路由器接收操作系统的DHCP请求后分配,主机再将ip配置到网卡
手动分配 : 手动配置ip地址,即静态地址.需要自己填写IP地址,路由器公网地址(默认网关),子网掩码,DNS.
使用
操作系统维护ARP(Address Resolution Protocol)表,即mac-ip的映射.
查表将对方ip转换成mac,如果没有查到,先给所有设备发送arp包,对应ip的主机会回复自己的mac地址,其他的会丢弃该包
因为网络范围的扩大,所以需要寻址
局域网和广域网 :即 LAN(local area network)和WAN(wide area network) ,其实局域和广域都是相对而言的,我能掌握的就是局域网
gateway,即网络中的关卡
用于在不同网络中通信的设备,所以交换机不算网关,路由器算网关.
网关实现多种功能,如路由、安全、负载均衡、缓存、压缩、加密、认证、授权、过滤、转码等
只有LAN口接局域网内设备
实现网卡的mac与交换机的LAN口的绑定.
将mac地址与端口绑定,维护mac地址表,通过控制端口来实现交换数据
WAN口接运营商以连接到互联网 LAN口接自己设备
数据包需要跨越子网的时候就要经过路由器
当发现数据包不在自己子网时,就将目标IP改成路由器的,然后经由DNS,到达目标
即NAT : Network Address Translation
如过两台设备在自己内网ip地址都是192.168.1.10,正常传输应该就会冲突
解决方法,将发送端的IP改成网关的IP,因为网关连接公网,IP是唯一的,能够正常寻址,解决了IPV4地址不足的问题
都是基于ip协议封装的协议,传输二进制数据
基于连接,保证数据的可靠性
建立连接的过程
建立和关闭其实都可以发两次包完成,即分别告诉对方要建立连接或断开连接
为了保证建立的可靠性,于是有第三次握手
未来保证数据传输的完整性,于是有了后两次挥手
握手表示双方都需要立刻响应,挥手表示自己到了可以关闭状态
另外为了保证数据的完整性,TCP建立文件缓冲区,每次发一部分,并在发送时附带序列号和发送的长度,以便于接收端把接收到的数据进行验证,从而确定是否重新请求
首先客户端发SYN请求连接
服务器会SYN+ACK收到请求并确认
然后客户端发ACK建立连接
第三次发ACK是因为如果网络阻塞或SYN丢失,客户端会再次发送SYN包
如果阻塞的SYN恢复,如果两次包直接建立连接,服务器就会建立多个连接,而客户端只需要一个,产生两边状态不匹配.
所以第三次是tcp的核心,用于在不稳定的网络建立可靠的连接
客户端发FIN,然后服务器会ACK表示知道要关了,客户端就不必再次发FIN了
再数据传输完成后,服务器发FIN并可以关了,客户端收到后会ACK,然后服务器收到后关闭,客户端再超时等待确认服务器已经关闭后再关闭
都是为了防止数据包丢失防止对方重复发包
直接传输,保证数据的时效性
封装成数据包后直接传输,用于语音和视频等少数丢包不影响的时候
另外常用于隧道网络
通过隧道网络实现,即在一个网络协议中封装另一个网络协议的方式,将数据从一个网络传输到另一个网络的技术]
解决的问题 : 我们的数据会经过其他服务器,可以被其进行过滤和修改,即防火墙
但如果有服务器能同时连接两边的网络,那么我们就可以通过这个服务器来访问墙外的网络,即代理
而数据在传输时经过对称加密
因为我们设备的IP都是内网IP,二者不能直接进行连接
而内网穿透就是通过将内网IP映射为内网穿透部门所提供的公网IP
从而能够跨局域网连接
windows中在cmd中执行
我们执行 ping baidi.com
得到多个 来自 47.254.33.193 的回复: 字节=32 时间=420ms TTL=32
TTL(Time to Live),windows初始为128,linux初始为64,为了避免数据包在网络中无线循环而设置
每经过一个路由器就减1,当减到0时就会销毁,路由器发送ICMP给发出者
可以知道ping的作用
验证,ping本机
ping 127.0.0.1
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
用于查看mac与ip映射
执行arp -a
得到下面格式的数据
Interface: 192.168.1.2 --- 0x4
Internet Address Physical Address Type Age
192.168.1.1 00-1a-2b-3c-4d-5e dynamic 100
192.168.1.10 00-aa-bb-cc-dd-ee dynamic 200
在这个示例中:
最终通过了哪些路由(route)
执行tracert baidu.com
得到下面数据
通过最多 30 个跃点跟踪
到 baidu.com [39.156.66.10] 的路由:
1 2 ms 2 ms 1 ms 192.168.2.55
2 * * * 请求超时。
3 * * * 请求超时。
4 * * * 请求超时。
5 * * * 请求超时。
6 20 ms 20 ms 19 ms 211.139.51.37
7 * 24 ms * ptr.cq.chinamobile.com [218.207.40.157]
8 * * * 请求超时。
9 * 91 ms * 221.183.72.13
10 56 ms 54 ms 52 ms 221.183.49.126
11 56 ms 52 ms 58 ms 111.13.188.38
12 57 ms 56 ms 56 ms 39.156.27.1
13 92 ms 59 ms 61 ms 39.156.67.1
14 * * * 请求超时。
15 * * * 请求超时。