一、互联网 internet
Internet因特网
ISP,Internet Service Provider,Internet服务提供商,比如移动、电信、网通、铁通等
局域网 LAN WLAN
城域网 MAN
广域网 WAN
1、网络互连模型
OSI 七层模型 应用层、表示层、会话层、运输层、网络层、数据链路层、物理层
TCP/IP协议 应用层、运输层、网际层、网络接口层
五层模型 应用层、运输层、网络层、数据链路层、物理层
2、网络分层
分层 | 数据 | 协议 |
---|---|---|
应用层 | 报文、用户数据 | FTP、HTTP、SMTP、DNS、DHCP |
运输层 | 段 | TCP、UDP |
网络层 | 包 | IP |
数据链路层 | 帧 | MAC |
物理层 | 比特流 |
3、公网IP,私网IP
Internet上的路由器中只有到达公网的路由表,没有到达私网的路由表
私网IP访问Internet需要进行NAT转换为公网IP
NAT特点,节约公网IP,隐藏内部真实IP
二、计算机之间连接方式
1、网线直连
需要用交叉线(不是直通线)
2、同轴电缆 终结电阻,T型连接器
通过两个终结电阻和一根电缆组成同轴电缆,然后电缆中间通过T型连接器可以连接多台设备
半双工通信,容易冲突,不安全,中间断了整个都无法使用了
3、集线器
使用集线器可以直接连接多台设备
半双工通信,容易冲突,不安全,跟同轴电缆一样没有智商
4、网桥
对多台设备的连接进行分割,能够隔绝冲突域
能够通过自学习得知每个接口那侧的MAC地址
5、交换机
相当于接口更多的网桥
全双工通信,比集线器安全
6、路由器
可以在不同网段之间转发数据
隔绝广播域
我们使用的路由器实际上=路由器+交换机
三、MAC地址
每一个网卡都有一个6字节(48bit)的MAC地址
全球唯一,固化在了网卡的ROM中
前3字节:OUI ,组织唯一标识符。由IEEE的注册管理机构分配给厂商
后3字节:网络接口标识符。由厂商自行分配
当48位全为1时,代表广播地址 FF-FF-FF-FF-FF-FF
1、MAC地址获取
当不知道对方主机的MAC地址时,可以通过发送ARP广播获取对方的MAC地址
获取成功后,会缓存IP地址、MAC地址的映射信息,俗称:ARP缓存
通过ARP广播获取的MAC地址,属于动态(dynamic)缓存。存储时间比较短(默认是2分钟),过期了就自动删除
2、相关命令
arp -a [主机地址]:查询ARP缓存
arp -d [主机地址]:删除ARP缓存
arp -s 主机地址 MAC地址:增加一条缓存信息(这是静态缓存,存储时间较久,不同系统的存储时间不同)
四、IP地址
互联网上的每一个主机都有一个IP地址
最初是IPv4版本,32bit(4字节); 后面推出了IPv6版本,128bit(16字节)
1、IP地址的组成
IP地址由2部分组成:网络标识(网络ID)、主机标识(主机ID)。通过子网掩码(subnet mask)可以得知网络ID 、主机ID
主机所在的网段 = 子网掩码 & IP地址
计算机和其他计算机通信前,会先判断目标主机和自己是否在同一网段
同一网段:不需要由路由器进行转发
不同网段:交由路由器进行转发
2、IP地址分类
A类 网络ID 8位 0开头 0-126
B类 网络ID 16位 10开头 128-191
C类 网络ID 24位 110开头 192-223
D类 1110开头,多播地址 224-239
E类 1111开头,保留为今后使用 240-255
只有A\B\C类地址才能分配给主机
主机ID为全0,表示主机所在的网段
主机ID为全1,表示主机所在网段的全部主机(广播)
可以尝试用ping给某个网段的全部主机发数据
3、A类地址
a、网络ID
0不能用,127作为保留网段。其中127.0.0.1是本地环回地址(Loopback),代表本机地址
第1部分的取值范围是:1~126
b、主机ID
第2、3、4部分的取值范围是:0~255
每个A类网络能容纳的最大主机数是:256 * 256 * 256 – 2 = 2的24次方 – 2 = 16777214
4、B类地址
a、网络ID
第1部分的取值范围是:128~191
第2部分的取值范围是:0~255
b、主机ID
第3、4部分的取值范围是:0~255
每个B类网络能容纳的最大主机数是:256 * 256 – 2 = 2的16次方 – 2 = 65534
5、C类地址
a、网络ID
第1部分的取值范围是:192~223
第2部分的取值范围是:0~255
b、主机ID
第3、4部分的取值范围是:0~255
每个C类网络能容纳的最大主机数是:256 – 2 = 2的8次方 – 2 = 254
6、D类地址,E类地址
D类 第1部分取值范围是:224~239
E类 第1部分取值范围是:240~255
五、子网
1、子网掩码的CIDR表示方法
192.168.1.100/24,代表子网掩码有24个1,也就是255.255.255.0
123.210.100.200/16 ,代表子网掩码有16个1,也就是255.255.0.0
2、子网划分
子网划分:借用主机位作子网位,划分出多个子网
六、超网
超网:跟子网反过来,它是将多个连续的网段合并成一个更大的网段
七、网络分类
局域网,城域网,广域网
局域网通信模型
PC <-----数字信号,网线-----> 集线器、交换机 <-----数字信号,网线-----> PC
广域网通信模型
PC <-----数字信号,网线-----> 调制解调器 <-----模拟信号,电话线-----> 调制解调器 <-----数字信号,网线-----> PC
PC <-----数字信号,网线-----> 光电转换器 <-----光信号,光纤-----> 光电转换器 <-----数字信号,网线-----> PC
八、ISP
Internet服务提供商
九、NAT
私网IP访问Internet需要进行NAT转换为公网IP
可以节约公网IP资源
会隐藏内部真实IP
NAT分类:静态转换,动态转换,PAT转换
十、数字信号,模拟信号
模拟信号
连续的信号,适合长距离传输
抗干扰能力差,受到干扰时波形变形很难被纠正
数字信号
离散的信号,不适合长距离传输
抗干扰能力强,收到干扰时波形失真可以修复
十一、信道
信息传输的通道,一条传输介质上可以有多条信道
单工通信
信道只能往一个方向传输,不能改变信号的传输方向
无线电广播,有线电视广播
半双工通信
信号可以双向传输,但必须是交替进行,同一时间只能往一个方向传输
对讲机
全双工通信
信号可以同时双向传输
手机
十二、域名
十三、代理服务器
特点
本身不生产内容
处于中间位置转发上下游的请求和响应
面向下游的客户端:它是服务器
面向上游的服务器:它是客户端
分类
正向代理:代理的对象是客户端。Fiddler,Charles
隐藏客户端身份
绕过防火墙(突破访问限制)
Internet访问控制
数据过滤
反向代理:代理的对象是服务器
隐藏服务器身份
安全防护
负载均衡
代理服务器相关头部字段
Via:追加经过的每一台代理服务器的主机名(或域名)
X-Forwarded-For:追加请求方的IP地址
X-Real-IP:客户端的真实IP地址
CDN
内容分发网络
利用最靠近每位用户的服务器 更快更可靠地将音乐、图片、视频等资源文件(一般是静态资源)传递给用户
CDN运营商在全国、乃至全球的各个大枢纽城市都建立了机房
部署了大量拥有高存储高带宽的节点,构建了一个跨运营商、跨地域的专用网络
内容所有者向CDN运营商支付费用,CDN将其内容交付给最终用户
# 十四、HTTP vs WebSocket
HTTP请求的特点:
通信只能由客户端发起。所以,早期很多网站为了实现推送技术,所用的技术都是轮询
轮询是指由浏览器每隔一段时间(如每秒)向服务器发出HTTP请求,然后服务器返回最新的数据给客户端
为了能更好的节省服务器资源和带宽,并且能够更实时地进行通讯,HTML5规范中出现了WebSocket协议
WebSocket
WebSocket,是基于TCP的支持全双工通信的应用层协议
在2011年由IETF标准化为RFC 6455,后由RFC 7936补充规范
客户端、服务器,任何一方都可以主动发消息给对方
WebSocket的应用场景很多 社交订阅、股票基金报价、体育实况更新、多媒体聊天、多玩家游戏等
对比
WebSocket和HTTP属于平级关系,都是应用层的协议 其实TCP本身就是支持全双工通信的(客户端、服务器均可主动发消息给对方) 只是HTTP的“请求-应答模式”限制了TCP的能力
WebSocket使用80(ws://)、443(wss://)端口,可以绕过大多数防火墙的限制 ws://example.com/wsapi wss://secure.example.com/wsapi
与HTTP不同的是,WebSocket需要先建立连接 这就使得WebSocket成为一种有状态的协议,之后通信时可以省略部分状态信息 而HTTP请求可能需要在每个请求都额外携带状态信息(如身份认证等)
WebSocket 建立链接
WebSocket需要借助HTTP协议来建立连接(也叫作握手,Handshake)
由客户端(浏览器)主动发出握手请求
Connection必须设置Upgrade 表示客户端希望连接升级
Upgrade必须设置websocket 表示希望升级到WebSocket协议
Sec-WebSocket-Version 表示支持的Websocket版本
Sec-WebSocket-Key是客户端生成的随机字符串
服务器接收到客户端的Sec-WebSocket-Key后,会进行以下操作
- Sec-WebSocket-Key加上一个固定的GUID值(258EAFA5-E914-47DA-95CA-C5AB0DC85B11) 258EAFA5-E914-47DA-95CA-C5AB0DC85B11
- 将①的结果进行SHA-1摘要计算 b37a4f2cc0624f1690f64606cf385945b2bec4ea
- 将②的结果进行Hex To Base64编码 s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
- 将③的结果做为Sec-WebSocket-Accept响应头的值,返回给客户端
WebService
Web服务,是一种跨编程语言和跨操作系统平台的远程调用技术标准
天气预报、手机归属地查询、航班信息查询、物流信息查询等 比如天气预报,是气象局把自己的服务以WebService形式暴露出来,让第三方程序可以调用这些服务功能 http://www.webxml.com.cn/zh_cn/index.aspx
事实上,WebService完全可以用普通的Web API取代(比如HTTP + JSON) 现在很多企业的开放平台都是直接采用Web API
SOAP(Simple Object Access Protocol),译为:简单对象访问协议 很多时候,SOAP = HTTP + XML WebService使用SOAP协议来封装传递数据
WSDL(Web Services Description Language),译为:Web服务描述语言 一个XML文档,用以描述WebService接口的细节(比如参数、返回值等) 一般在WebService的URL后面跟上?wsdl获取WSDL信息
RESTful - 简介
REST 译为“表现层状态转移”
REST 是一种互联网软件架构设计风格 定义了一组用于创建 服务的约束 符合REST 架构的 服务,称为RESTful Web服务
实践建议
URL 中使用名词(建议用复数形式),不使用动词
使用HTTP的方法表达动作
一个资源连接到其他资源,使用子资源的形式
API API
返回JSON格式的数据
发生错误时,不要返回200状态码
HTTPDNS
HTTPDNS是基于HTTP协议向DNS服务器发送域名解析请求
替代了基于DNS协议向运营商Local DNS发起解析请求的传统方式 可以避免Local DNS造成的域名劫持和跨网访问问题
常用在移动互联网中(比如在Android、iOS开发中)
市面上已经有现成的解决方案 腾讯云:https://cloud.tencent.com/product/httpdns 阿里云:https://help.aliyun.com/product/30100.html
移动端集成相关的SDK即可使用HTTPDNS服务
优势点 | xx云HTTPDNS | 运营商Local DNS |
---|---|---|
高速 | 高速访问<br />接入节点覆盖国内Top17 运营商、东南亚及北美,解析精准,访问迅速 | 访问缓慢<br />用户跨网访问,解析异常问题 |
安全 | 防劫持<br />绕开运营商Local DNS,无劫持,防止DNS被污染拦截 | 广告劫持<br />域名解析结果被指向广告页面、插入第三方广告 |
智能 | 精准调度<br />精确识别来源请求,访问导向最准确节点 | 解析转发<br />自身不进行域名递归解析,而把请求转发给其他运营商 |
可靠 | 负载均衡<br />一个IP 三地集群容灾,秒级自动故障切换,服务提供99%以上的SLA | 异常故障<br />缓存服务器运维环境参差不齐,时有故障 |
FTP
文件传输协议,基于TCP
FTP - 连接模式
FTP有2种连接模式:主动(Active)和被动(Passive)
不管是哪种模式,都需要客户端和服务器建立2个连接
① 控制连接:用于传输状态信息(命令,cmd) ② 数据连接:用于传输文件和目录信息(data)
FTP - 主动模式
① 客户端打开一个随机的命令端口,端口号大于1024,同时连接至服务器的命令端口21
② 客户端开始监听N+1数据端口,同时向服务器发送一个Port命令给服务器的命令端口21,此命令告诉服务器,客户端正在监听的数据端口N+1 并且已准备好从此端口接收数据
③ 服务器打开20号数据端口,并且创建和客户端数据端口(N+1)的连接
FTP - 被动模式
客户端通过两个随机的端口与服务器建立连接,命令端口N,数据端口N+1
① 客户端的命令端口N用于连接服务器的命令端口21
② 客户端通过命令端口N发送PASV命令给服务器的命令端口21
③ 服务器打开一个随机的数据端口P,并告知客户端该端口号P
④ 客户端数据端口N+1发起与服务器数据端口P的连接
邮件相关协议
发邮件使用的协议 SMTP(Simple Mail Transfer Protocol),译为:简单邮件传输协议
基于TCP,标准参考RFC 5321 服务器默认使用25端口,SSL/TLS使用465端口
收邮件使用的协议
POP(Post Office Protocol),译为:邮局协议
基于TCP,最新版是POP3,标准参考RFC 1939 服务器默认使用110端口,SSL/TLS使用995端口
IMAP(Internet Message Access Protocol),译为:因特网信息访问协议
基于TCP,最新版是IMAP4,标准参考RFC 3501 服务器默认使用143端口,SSL/TLS使用993端口
POP vs IMAP
POP的特点
客户端连接服务器时,将会从服务器下载所有邮件 。可以设置下载完后,立即或一段时间后删除服务器邮件
客户端的操作(比如删除邮件、移动到文件夹)不会跟服务器同步
每个客户端都是独立的,都可以获得其自己的电子邮件副本
IMAP的特点
客户端连接服务器时,获取的是服务器上邮件的基本信息,并不会下载邮件
等打开邮件时,才开始下载邮件 客户端的操作(比如删除邮件、移动到文件夹)
会跟服务器同步 所有客户端始终会看到相同的邮件和相同的文件夹
IPV6
网际协议第6版
用它来取代IPv4主要是为了解决IPv4地址枯竭问题,同时它也在其他方面对于IPv4有许多改进
然而长期以来IPv4在互联网流量中仍占据主要地位,IPv6的使用增长缓慢
- IPv6地址为128bit,每16bit一组,共8组
- 每组以冒号“:”隔开,每组以4位十六进制方式表示。2001:0db8:86a3:08d3:1319:8a2e:0370:7344
- 类似于IPv4的点分十进制,同样也存在点分十六进制的写法。2.0.0.1.0.d.b.8.8.5.a.3.0.8.d.3.1.3.1.9.8.a.2.e.0.3.7.0.7.3.4.4
- 每组前面连续的0可以省略。下面的IPv6地址是等价的。2001:0db8:02de:0000:0000:0000:0000:0e13 === 2001:db8:2de:0:0:0:0:e13
- 可以用双冒号“::”表示一组0或多组连续的0,但只能出现一次。下面的IPv6地址是等价的。2001:db8:2de:0:0:0:0:e13 === 2001:db8:2de::e13
- 双冒号只能出现一次,出现两次的话,会造成歧义
- ::1是本地环回地址(0:0:0:0:0:0:0:1)
Version(占4bit,0110):版本号
Traffic Class(占8bit):交通类别 指示数据包的类别或优先级,可以帮助路由器根据数据包的优先级处理流量 如果路由器发生拥塞,则优先级最低的数据包将被丢弃
Payload Length(占16bit):有效负载长度 最大值65535字节 包括了扩展头部、上层(传输层)数据的长度
Hop Limit(占8bit):跳数限制 与IPv4数据包中的TTL相同
Source Address(占128bit):源IPv6地址
Destination Address(占128bit):目的IPv6地址
Flow Label(占20bit):流标签 指示数据包属于哪个特定序列(流) 用数据包的源地址、目的地址、流标签标识一个流
Next Header(占8bit):下一个头部
指示扩展头部(如果存在)的类型、上层数据包的协议类型(例如TCP、UDP、ICMPv6)
即时通讯
即时通信(Instant Messaging,简称IM),平时用的QQ、微信,都属于典型的IM应用
国内的IM开发者社区 http://www.52im.net/
IM云服务 网易云信、腾讯云、环信等
常用的协议 XMPP、MQTT、自定义协议
XMPP
XMPP(Extensible Messaging and Presence Protocol)
译为:可扩展消息与存在协议,前身是Jabber 基于TCP,默认端口5222、5269
特点 使用XML格式进行传输,体积较大 比较成熟的IM协议,开发者接入方便
MQTT
MQTT(Message Queuing Telemetry Transport),译为:消息队列遥测传输 基于TCP,默认端口1883、8883(带SSL/TLS)
特点 开销很小,以降低网络流量,信息冗余远小于XMPP 不是专门为IM设计的协议,很多功能需要自己实现 很多人认为MQTT是最适合物联网(IoT,Internet of Things)的网络协议
流媒体
流媒体(Streaming Media),又叫流式媒体 是指将一连串的多媒体数据压缩后,经过互联网分段发送数据,在互联网上即时传输影音以供观赏的一种技术 此技术使得资料数据包得以像流水一样发送,不使用此技术,就必须在使用前下载整个媒体文件
RTP(Real-Time Transport Protocol),译为:实时传输协议 参考:RFC 3550、RFC 3551,基于UDP
RTCP(Real-Time Transport Control Protocol),译为:实时传输控制协议 参考:RFC 3550,基于UDP,使用RTP的下一个端口
RTSP(Real-Time Streaming Protocol),译为:实时流协议,参考:RFC 7820 基于TCP、UDP的554端口
RTMP(Real-Time Messaging Protocol),译为:实时消息传输协议,由Adobe公司出品 默认基于TCP的1935端口
HLS(HTTP Live Streaming),基于HTTP的流媒体网络传输协议,苹果公司出品,
网络爬虫
网络爬虫(Web Crawler),也叫做网络蜘蛛(Web Spider) 模拟人类使用浏览器操作页面的行为,对页面进行相关的操作 常用爬虫工具:Python的Scrapy框架
robots.txt是存放于网站根目录下的文本文件,比如https://www.baidu.com/robots.txt 用来告诉爬虫:哪些内容是不应被爬取的,哪些是可以被爬取的 因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写
它并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私 只能防君子,不能防小人 无法阻止不讲“武德”的年轻爬虫爬取隐私信息
网友评论