网络协议基础知识

一、互联网 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后,会进行以下操作

  1. Sec-WebSocket-Key加上一个固定的GUID值(258EAFA5-E914-47DA-95CA-C5AB0DC85B11) 258EAFA5-E914-47DA-95CA-C5AB0DC85B11
  2. 将①的结果进行SHA-1摘要计算  b37a4f2cc0624f1690f64606cf385945b2bec4ea
  3. 将②的结果进行Hex To Base64编码  s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
  4. 将③的结果做为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
高速 高速访问
接入节点覆盖国内Top17 运营商、东南亚及北美,解析精准,访问迅速
访问缓慢
用户跨网访问,解析异常问题
安全 防劫持
绕开运营商Local DNS,无劫持,防止DNS被污染拦截
广告劫持
域名解析结果被指向广告页面、插入第三方广告
智能 精准调度
精确识别来源请求,访问导向最准确节点
解析转发
自身不进行域名递归解析,而把请求转发给其他运营商
可靠 负载均衡
一个IP 三地集群容灾,秒级自动故障切换,服务提供99%以上的SLA
异常故障
缓存服务器运维环境参差不齐,时有故障

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)

头部
IPV6头部

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的文件名应统一为小写

它并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私 只能防君子,不能防小人 无法阻止不讲“武德”的年轻爬虫爬取隐私信息

你可能感兴趣的:(网络协议基础知识)