100个概念了解计算机网络
- 路由器和交换机有何异同?
- 网络协议
- 在网络中进行数据交换必须遵循的规则、标准或约定
- 规定了消息的格式、意义、顺序,通信参与实体接收到消息所采取的动作
- 协议三要素
- 语法(格式)
- 语义
- 时序
- HTTP/TCP/IP/802.11/Skype等
- 网络的基本结构:网络边缘、接入网络、核心网
- 什么是以太网?
- 网络核心:路由与转发
- 路由 routing:确定分组从源到目的的路径
- 转发 forwarding:将分组从路由器的输入端口交换至输出端
- 数据交换:说白了就是如何把数据从源传输到目的
-
- 电路交换:电话网络
- 报文交换:电报。报文要整体地被传输
-
- 分组交换:将报文拆成一系列小的数据包,然后再加上报头,队列存储-转发方式
-
- 需要拆分、重组,加头部信息
- 分组交换优于报文交换:并行传输,需要的缓存更小,速度更快,但每组报文都需要报头
- 分组交换优于电路交换?适用于突发数据传输网络,资源共享,无需呼叫建立
- 可能产生拥塞
- 速率/数据传输数据/比特率(1K是1000)/带宽
- 结点处理、排队延迟(等待输出链路可用,取决于路由器拥塞程度)、传输延迟(将所有比特传走)、传播延迟(物理上的,链路之间电磁波信号的延迟)
- 相当于一个团的人买票进站(结点处理),候车(排队),传输延迟(一部一部车发出)、传播延迟(路上的时间)
- 时延带宽积:当一个bit到达下个一路由器时,路上还有多少个bit,带宽*传播时延,以bit为单位描述链路长度
- 缓存满了导致丢包,缓存满了就会丢包,丢包率
- 吞吐量:取决于链路中的瓶颈链路
- 协议与服务
- 实体表示任何可以发送或者接收信息的硬件或者软件进程
- 协议是水平的,两个相互通信的系统的同一层中对等的实体使用同一个协议:进行通信的规则的集合
- 服务是垂直的,上一层使用下一层提供的接口/服务;下层协议的实现对上一层是透明的
- 同系统的相邻层实体间通过SAP服务访问点,交换原语,指定请求的特定服务
- OSI七层参考模型
- 每一层都要给数据包加头(数据链路层还要加尾),得到X-PDU(协议数据单元)
- 加头是为了:增加控制信息如地址(网络层的地址信息就是ip地址),很好理解,要让别人知道数据包是哪个发送的,要发送给谁(是哪个IP地址,哪个应用程序的数据包呢)
- 差错检测编码(有的协议没有)、协议控制(优先级、服务质量QoS、安全控制等)
- 传到对等的层后就可以去掉下一层的头了,信息已经用过了,不需要了
- 物理层传输bit流(就是单纯的bit而已!无法寻址)
- 数据链路层以帧为单位进行结点-结点传输,进行物理寻址:在帧头中加源/目标物理地址;流量控制、差错控制等
- 网络层得到负责数据分组(packet)从源主机到目的主句的数据分组(需要跨越多个网络,因此是全局的,逻辑寻址也就是IP地址)
- 路由功能
- 分组转发:在网络层中网络地址不变,而物理地址在新结点上会改变
- 实现主机级通信
- 传输层
- 实现进程级通信
- 报文的分段与重组
- SAP寻址:将完整报文提交给正确进程,如端口号
- 端到端的连接控制、流量控制、差错控制
- 会话层:对话控制、同步,是最薄的一层,实际上这一层被融入其它层
- 表示层:两个系统间交换信息的语法和语义。数据表示转化(与平台无关),加密解密,压缩解压缩等,实际上这一层也被融入了应用层
- 应用层:最多功能的层,给用户提供接口使用网络(服务)
- TCP/IP参考模型
- 应用层:HTTP/SMTP/DNS/RTP/FTP....... 报文
- 运输层:TCP/UDP 段
- 网际层:IP 所有应用都基于IP协议 数据报
- 网络接口层:没有特别的协议,只需要:只需要能够封装IP分组,能够端到端传输即可
- 数据链路层 数据帧
- 物理层 bit
应用层/网络应用
-
不同的应用有不同的特点!因此需要不同的协议
- C/S 客户机/服务器结构
- P2P 点对点结构
- 混合结构
- 网络应用进程间通信
- 同一主机上的进程间通信?
- 不同主机上如何进行进程间通信?
- 客户机进程与服务器进程(P2P结构中也有!)
- 套接字Socket
- 操作系统提供了API:文件读写、访问磁盘、内存分配、以及网络应用API
- 操作系统提供了API:文件读写、访问磁盘、内存分配、以及网络应用API
- 如何寻址进程?每个进程必须拥有标识符:IP地址定位主机,还不够精确
- 端口号用来唯一地定位进程,HTTP 80, Mail 25;端口号80是服务器进程的端口号,而不是客户端浏览器的端口号!
- 网络应用应该遵循应用层协议,公开协议如HTTP,SMTP;私有协议如P2P文件共享应用
- 应用层协议的内容:
- 消息的类型:有几种类型,请求消息,响应消息
- 消息的语法格式,字段,字段的语义,规则
- Internet提供的传输服务:
- TCP
- 面向连接:C/S 全双工
- 可靠的传输(不丢包,不乱序)
- 流量控制
- 拥塞控制:限制发送方的发送速度
- 不提供时延保障、不提供最小带宽保障
- UDP
- 什么都不提供!但是因此更自由
- TCP
- Web应用
- Web网页,包含多个对象:包含HTML文件、图片、视频、脚本...
- 寻址:URL http://host:port//path 协议://主机名:端口号//路径
- 使用的应用层协议是HTTP
- 是C/S结构:客户(浏览器)能够请求、接收、展示Web对象;服务器能够响应客户的请求、发送对象(Apache软件)
- 使用的传输层协议是TCP。无状态协议,每次通信是独立的。
- HTTP连接:非持久性连接与持久性连接(流水机制)
- HTTP协议:请求消息request与响应消息response
- 请求消息:
- GET
- POST
- HEAD
- PUT
- DELETE
- 响应消息:
- 状态响应代码:200 400 404 502
- Cookie:服务端生成,通过HTTP响应报文发送给浏览器,浏览器将cookie的key:value存放在本地,解决了HTTP协议无状态的问题
- Web缓存/代理服务器技术
- 能够在不访问服务器的前提下满足客户端的HTTP请求(缩短响应时间、减少开销、CDN内容分发网络)
- 浏览器缓存:在本地硬盘上,由浏览器管理,退后操作能够直接退到上一个网页
- 代理服务器缓存:在C与S之间,浏览器向代理服务器发送HTTP请求
- 条件性GET方法:代理服务器上的缓存是否与服务器一致
- Email应用 邮件客户端、邮件服务器、SMTP协议 异步(发送方与接收方并不同时)
- 邮件服务器:比如@163.com, @qq.com;
- 邮箱
- 消息队列
- SMTP使用TCP协议:必须可靠传输
- 端口25
- 命令/响应模式(与HTTP的请求/响应模式不同):ASCII文本/状态代码和语句
- 消息只能包含7位ASCII码(英文字母、字符等)
- SMTP协议是传输协议,在发邮件时起作用;还有邮件访问协议:POP/IMAP/HTTP(浏览器来收发邮件)
- 邮件服务器:比如@163.com, @qq.com;
- DNS服务,域名解析系统
- 域名更方便,IP地址如何映射得到域名?域名就是www.baidu.com www.beihang.edu.cn这样的。
- DNS将域名映射到IP地址:1. 要为全世界所有主机服务;2. 任意时刻都要提供服务
- 是应用层协议,Internet核心功能
- 服务器多个ip实现负载均衡
- 使用分布式、层次式数据库:单点失败问题、流量问题、距离问题、维护性问题
- 本地域名服务器(ISP自有,默认域名服务器)
- 权威域名解析服务器、根域名解析服务器
- DNS记录和消息格式:
- 资源记录RR A类:主机域名->IP地址 NS类:域->该域的权威域名解析服务器的IP地址
- CNAME类 别名->真实域名 MX类 邮件
- DNS协议与消息格式 查询/回复 query/reply
- 一般浏览器拿到一个域名,先在本地dns里查询
- 本地没有,就去调用gethostbyname函数,gethostbyname函数首先在hosts文件中查询,如果没有再到DNS服务器上去查
- https://zhuanlan.zhihu.com/p/79350395
- P2P
- 比较