计网
计算机网络
1.2网络协议基础
协议的概念=>协议由标准化组织管理=>常见的标准化组织=>协议标准=>TCP/IP OSI IPX等 => 均为分层模型 => 分层的目的 原因 =>每一层的原因 原理 机制(封装与解封装)
协议
- 解释:协议就是一套规则,一个约定——实现达成一个详细的约定,并遵循同一套约定标准,以此进行后续处理
- 存在形式:程序
数据通信标准
事实标准/协议——未被组织承认,但都在用
法定标准——法律规定
ISO 国际标准化组织 制定各行各业的标准 IEEE 电子电器工程师协会 802.3 有限通信协议集 802.11无线通信协议集(WIFI就是采用这个协议) IETF INTERNET工程任务委员会 产生两种文件:“互联网草案 Internet draft”(任何人都可提交,相当于idea) 和 RFC(request for comments)历史存档(如802.1Q Vlan协议) ANSI 美国国家标准局 EIA/TIA 电子工业协会 ITU 国际电信联盟
世界公认的互联网之父们
罗伯特·泰勒 && 拉里·罗伯茨——ARPA NET 蒂姆·伯纳斯·李——HTTP(WWW——World wide web) 温顿·瑟夫&&罗伯特·卡恩——TCP / IP This is for everyone 罗伯特·梅特卡夫——以太网(局域网) 伦纳德·克兰罗克——分组交换 && 第一个网络数据TCP/IP模型
TCP/IP Transmission Control Protocol and Internet Protocol 1969年提出,拥有实际实用价值,也是唯一幸存者 (五层 或者 四层) 应用层 应用层:软件 表示层 解决不同操作系统间的通信和语法问题 解决的需求:转化为标准格式 会话层:建立和管理应用程序之间的通信 解决的需求:会话通信 传输层 原因:网络间数据发送会出现丢包的问题,数据传输是不可靠的 实现:保证数据报文正确传输 功能: 1、面向链接 2、面向无连接 解决的需求:不同的网络节点数据传输中保证数据可靠 网络层 实现:不同局域网之间发送数据,让数据从一个网络到另一个网络 功能: 1、寻找最佳路径(路由) 2、寻址(IP地址) 解决的需求:不同网络之间如何选择路径,并连通数据 数据链路层 解决内部网络的通信——保证硬件间数据正确 原因:传输时会有数据损耗,数据可能错误 目的:扩展不同介质之间的传输。确保传输的比特流正确,并且针对错误有纠错功能 实现:将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路 功能: 1:确保数据正确 2:寻址(MAC) 解决的需求: 使物理信号无差错传递 物理层 解释:硬件间的通信(接口类型,传输介质的速率) 目的:传输比特流(数模转换与模数转换:1,0=>电流的强弱=>1,0) 解决的需求:物理信号之间的传递,使物理线路通畅 其它同时代模型: OSI 解决网络间兼容性的问题。将服务,接口,协议独立出来。 1984年提出,并不实用,只有理论价值 IPX/SPX SNA思考:为什么要分层
网络通信非常复杂: 1、数据传输本身 —— 以010101001010二进制传输 2、网络传输本身 —— 降低复杂度 应用要求 相互独立于不同的应用需求 标准化 促进标准化 厂商兼容性 简化网络操作 学习成本/操作性 便于学习与操作 模块化————————高内聚 低耦合 内聚: 耦合:层与层之间相互独立,上下层之间彼此耦合度低,互不干扰思考:分层模型的原理
封装与解封装——套娃 发送时:不停加入外层封装 接收时:不停拆除外层封装 发生在互联网的任何一次通信都是封装与解封装的过程
1.3 (TCP/IP)应用层
软件与硬件
应用层 ---------↑软件方向(软件开发) ↓硬件方向(通信、传输) 传输层 网络层 接口层应用层协议(application layer protocol)
- 解决的需求:运行在不同端系统上的应用程序进程如何相互传递报文
Part1 工作原理
- 协议 != 程序
- 程序调用应用层的协议,而不是每一个程序都有一个协议
- 如:网易邮箱、QQ邮箱 调用POP3协议
- 特点:数量在所有层里最多
- 目的:根据不同的应用层协议产生应用层数据
- 软件服务模式:
- 客户机/浏览器 CS架构 或者 BS架构(client-server / browser-server)
- 客户端请求服务器
- 服务器相应客户端
- (浏览器是CS架构,浏览器本身也是客户端)
- P2P(对等体结构)
- 每个人的电脑都可以当服务器,也可以当客户端
- 每个人的计算机都可以访问其他人计算机的内容,同样自己的计算机都可以相应其他人的访问,达到共享
- (下载是典型的p2p应用)
- 混合模式
- 根服务器 + 主机
- 以下载为例:主机=>访问根服务器=>返回最佳P2P下载路径=>主机同时对N个主机进行访问,获取下载资源
- 客户机/浏览器 CS架构 或者 BS架构(client-server / browser-server)
- 协议 != 程序
Part2 HTTP && HTTPS
HTTP——超文本传输协议(HyperText Transfer Protocol )
架构:CS架构 (User - Web) 被动式服务(不请求,无资源)
基础:TCP
前提:
- 位置(信息资源在服务器的位置)——URL(统一资源定位符)
- 规则(CS之间如何沟通)——HTTP
- 呈现(返回的信息如何组织起来)——HTML
资源请求:
功能状态码
HTTP特点
- 无状态——对客户端无状态储存(访问一个web需要反复进行登录——每次都要进行同服务器的三次握手四次挥手建立连接)
- 无连接——因为无状态,所以无法储存链接
- 基于请求与相应——客户机-服务器模式
- 明文通信——请求与相应不会同通信方进行确认,无法保证数据完整性
HTTPS特点
基于HTTP,通过SSL或者TLS进行加密处理——提供身份验证和数据完整性保护
过程:
(C)请求下载服务器CA证书/根证书(CA中有公钥)=>(C)使用公钥加密数据传递服务器=>(S)使用私钥解密,返回数据 即SSR ```Part3 DNS协议
域名解析协议(Domain Name System)
架构:CS
功能:域名=>IP地址
(多用UDP,主服务器同备用服务器之间同步数据时,使用TCP)
查询流程:
1、查看本地的hosts文件,如果host文件里有直接使用host文件里的记录——/system32/etc/host 2、启动DNS客户端——查询DNS服务器地址=>查询本地DNS服务器 3、如果本地均无,向前一个DNS服务器查找,直到查找到根服务器
Part4 其它协议
- FTP(File Transfer Protocol)
- SMTP(Simple Mail Transfer Protocol) && POP3(Post Office Protocol 第三版邮局协议)
- Telnet——远程登录协议
1.4 (TCP/IP)传输层
传输层位于TCP/IP协议的第四层,为App提供服务。定义了APP之间端到端的连通性。
Part1 端到端通信
“地址”的概念在所有层中,所有计算机语言,编程中都存在。
传输层的“地址”,即端口号——也即程序地址
功能:用来识别同一计算机中进行通信的不同应用层服务,实现指定应用程序到指定应用程序之间的通信
每一个协议拥有一个端口号
源端口号是随机的,且必须大于1023
请求包:源端口>1023 Source Port:5002 Destination Port:443 相应包:源端口<1023 Source Port:443 Destination Port:5002会话
A向B通信 A发送数据,源端口号(随机)2000,目标端口号80 B收到数据 B返回数据时,源端口号为80,目标端口号为2000通过五个参数甄别一个通信
IP(源IP、目标Ip) 协议号 端口号(源端口号,目标端口号)
端口号
长度:16位,共65536个 范围:0-65535指派方式
熟知端口:0-1023 IANA占用,公共协议 注册端口:1024-49151 IANA不指派、不控制。在IANA注册以防重复 动态端口(临时端口):49152-65535 可以通过任意进程来使用Windows下查看端口号占用情况——windows端口表
netstat -aon
Part2 TCP可靠性
TCP提供面向链接(通信时双方都可确保对方均接受了链接) 、可靠的服务。
UDP提供面向无连接服务(A对B发送信息,不考虑是否真的收到)。
可靠性(通过TCP首段报文说明文件来实现以下功能)
- 面向链接(体现在链接的建立与拆除上)
- 最大报文肠长度
- 确认传输机制
- 流量控制
- 首部数据校验和
TCP报文
三次握手*建立链接)与四次挥手(拆除链接)
SYN:请求建立链接 FIN:Finish 为什么是四次才能拆除链接: 拆除时Server端需要先把数据全部发送完毕,再去请求断开链接 如果直接请求断开链接,数据就会被腰斩 TCP半关闭状态分段与重组
分段后,潜在的包丢失的成本会将至最小,重发时的工作量也小;若不分段,丢包会导致整个包都丢,导致整个包重传,效率过低; 为什么要分段,重组: 目的:提升数据传输效率,降低故障率 流程: 1、确定最大报文长度——通过MSS 2、确定重组的依据——通过序列号 MTU:物理链路上最大承担的数据链路量(数据联络层的概念) MSS(Max Segment Size)最大报文尺寸=MTU-网络层数据包头-传输层数据包头 = 1500 - 20 - 20 = 1460字节 在三次握手时,确定MSS值拆分时,会在数据中添加统一标识符:序列号 A ----------B-------------C 0-1460 1461-... ...-...确认与重传
确认:基于序列号 重传: 时间间隔(三次握手时定义)——根据C/S网络环境动态生成流量控制
滑动窗口: 为什么有滑动窗口——提高吞吐量,减少排队与等待, 慢启动: 避免启动时,高并发导致的网络高峰
Part3 TCP与UDP区别
代表:微信、短信
不需要建立链接、不需要维护状态
TCP——数据流协议,TCP会对数据进行分段,而UDP不会
UDP——数据报协议
1.5 (TCP/IP)网络层
实现终端节点到节点之间的通信(个人主机)
核心包括: IP(编址)寻址、路由、分包与组包
数据 = 传输层head + 应用层head + 应用层数据
Part1 点到点通信 && Part2 IP地址
IP地址使得异构网络之间得以连通,让不同的网络在同一个规则下通信
点分十进制
V4地址总数:43亿个
五类地址:
ABC类的私有地址 A类私有 10.0.0.0 - 10.255.255.255 10网段 B类私有 172.16.0.0 - 172.31.255.255 172.16-172.32网段(不包含) C类私有 192.168.0.0 - 192.168.255.255 192.168网段
掩码
1的部分为网络,0的部分为主机
Part3 路由
路径=>路由=>路由器=>路由表
告诉数据包怎么到达目的网络
解决的三个问题
1、目标是什么 目的地址+子网掩码 2、从哪个方向走 输出接口 3、下一站在哪 下一跳类型
直连 静态 动态(ARP、OSPF、IS-IS、BGP)
Part4 Ip分片
为什么要在网络层还要分片?
主要是对传输层UDP的补充,UDP是整个发过来的。 MTU在Internet中为1500,在FDDI中是4352,在ATM中为9180。上一层可能传输比MTU更多的数据量。IP报文中专门用来分片的字段
标识位、标志位、片偏移 标识位: 被分片后被打上统一表示 标志位: DF——不分片位 MF——更多分片位 片偏移: 类似于TCP中的序列号,对分片进行重组
1.6 (TCP/IP) 接口层
Part1: 数据链路层
数据链路层实现的是逐跳传递,确保物理信道可以正常发送数据
功能:帧发送与帧接收、用户数据帧的组装与分解、物理层信息监测、信道闲忙、数据链路的收发管理
地址:MAC地址
(不同操作系统表示的MAC地址方式不同,但都是十六进制)
48位十六进制数 第一位:确定单播地址还是多播地址 0:单播 1:多播 第二位:确定是全局地址还是本地地址 0:全局 1:本地 3-24位:厂商识别码 IEEE管理,保证厂家之间不重复 25-48位:厂商内识别码 厂商管理,保证产品之间不重复链路类型
共享介质型网络: 所有PC共用一条线:争用,令牌传递。 争用/CSMA(载波监听多路访问):边听边发 冲突停发 随机延迟等待 非共享介质型网络: 交换式以太网——通过交换机进行通讯 (有线)两种格式: 802.3 IEEE Ethernet2 (无线)以太网 IEEE802.11系列协议