计算机网络基础--五层模型简介
五层模型图
物理层
在计算机网络中,用来连接各种网络设备的传输媒体种类众多,大致可分为两类
导引型传输媒体,如双绞线、同轴电缆、光纤
非导引型传输媒体,如微波通信(WiFi)
计算机网络中的物理层就是解决在各种传输媒介上传输比特0和1的问题,进而给数据链路层提供透明传输比特流的服务(透明指数据链路层无需知道物理层如何处理和传输比特流,只管享受物理层提供的服务即可)
传输方式
数据链路层
-
链路(Link) 就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点
-
数据链路(Data Link)是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路
-
数据链路层以帧为单位传输和处理数据
数据链路的三个重要问题
-
封装成帧:数据链路层给上层交付的协议数据单元添加帧头和帧尾
接收方就会根据帧头和帧尾区分出一个个的帧,即帧定界
透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。所以,在链路层,如果IP数据报中有与帧标志重复的数据,那么会在发送方被进行转义,并且在接收方链路层进行复原
-
差错检测:帧在传输过程中遭遇干扰后可能出现误码,可以通过检错码发现是否出现误码。发送方在发送数据前,基于待发送的数据和检错算法计算出检错码,并封装在帧尾。接收方收到帧后通过检错码和检错算法,判断帧是否存在出现误码
常见的差错检验算法
-
奇偶校验:在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中“1”的个数为奇数(奇校验)或偶数(偶校验)
-
循环冗余校验:收发双方约定好一个生成多项式,接收方通过生成多项式来计算收到的数据是否产生误码
由于可靠性一般由上层来保证,所以链路层在发现帧传输差错后,只需要丢弃即可
-
-
可靠传输
网络层
如果需要将异构型的网络互连起来,形成一个更大的互联网就需要使用网络层互连设备路由器
网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。要实现网络层任务,需要解决一下问题
-
网络层先传输层提供怎样的服务--可靠还是不可靠的传输
-
网络寻址问题
-
路由选择问题
-
静态路由配置:用户或网络管理员使用路由器的相关命令给路由器人工配置路由表
-
动态路由配置
-
数据报
ICMP
为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol)。主机或路由器使用ICMP来发送差错报告报文和询问报文。ICMP报文被封装在IP数据报中发送
ICMP差错报告报文种类
-
终点不可达
-
源点抑制
-
时间超过
另外,当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文
-
参数问题
-
改变路由(重定向)
常见的ICMP询问报文
-
回送请求和回答
-
时间戳请求和回答
ICMP的应用
-
ping--分组网间探测
-
用来测试主机或路由器间的连通性
-
应用层直接使用网际层的ICMP (没有通过运输层的TCP或UDP)
-
使用ICMP回送请求和回答报文
-
-
tracert--跟踪路由
-
用来测试IP数据报从源主机到达目的主机要经过哪些路由器
-
使用了ICMP回送请求和回答报文以及差错报告报文
原理是,通过不断的发送TTL从1开始一直增加到2,3,4一直到请求到目标主机为止。这样路径上每一跳的路由器都会返回TTL耗尽的差错报告报文。这样就能知道联通路径上的所有路由器了
-
运输层
简介
在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。如何为运行在不同主机上的应用进程提供直接的通信服务是运输层的任务,运输层协议又称为端到端协议
运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道。根据应用需求的不同,因特网的运输层为应用层提供了两种不同的运输协议,即面向连接的TCP和无连接的UDP
端口号
TCP和UDP对比
传输控制协议TCP
流量控制
所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制
拥塞控制
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。这种情况就叫做拥塞。可以通过丢包率来判断是否网络拥塞,根据对应的公式,算出网络拥塞下的发送速率该有多大,进而求出当前的滑动窗口大小
TCP的连接速率是一个慢启动的过程:
一开始滑动窗口只有1
每一次收到ACK,都会成倍的增加滑动窗口大小
每一次快速重试都会降为一半
每一次超时重传,都会降为1
TCP报文段首部格式
应用层
应用层是解决通过应用进程的交互来实现特定网络应用的问题
网络应用程序运行在处于网络边缘的不同的端系统上,通过彼此间的通信来共同完成某项任务。开发一种新的网络应用首先要考虑的问题就是网络应用程序在各种端系统上的组织方式和它们之间的关系目前流行的主要有以下两种
-
客户/服务器(C/S)方式
-
对等(P2P)方式
域名系统DNS
通常,识别主机有两种方式:主机名(类似于www.baidu.com )和IP地址(类似于183.232.231.172)。主机名方便人们记忆,符合人们阅读习惯;而IP地址的定长性和层次结构有利于路由器识别。为了同时满足上述两种需求,我们需要进行主机名到IP地址转换的目录服务(即将主机名映射为IP地址),DNS则是提供了主机名到IP地址映射服务
域名空间
DNS 服务器的部分层次结构,从上到下依次为根域名服务器、顶级域名服务器和权威域名服务器。域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询
DNS解析流程
在浏览器输入一个网址的时候
-
操作系统请求本地缓存,查询host域名配置
-
本地缓存没有,查询本地DNS服务器(本地DNS服务器宽带服务商的DNS)
-
本地DNS服务器没有缓存,查询根域名服务器
-
根域名服务器会指向顶级域名服务器
-
顶级域名服务器会指向权威域名服务器
-
最终拿到权威域名服务器结果,并缓存在本地DNS服务器
从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询
FTP协议
FTP是文件传输协议,客户端向远程主机发送文件或者下载文件。FTP默认工作在21端口
FTP客户端和服务器之间要建立以下两个并行的TCP连接
-
控制连接,在整个会话期间一直保持打开,用于传送FTP相关控制命令
-
数据连接,用于文件传输,在每次文件传输时才建立,传输结束就关闭
电子邮件EMAIL
电子邮件系统采用C/S方式。电子邮件系统由三个构建组成
-
用户代理。是用户和电子邮件系统的接口,又称为电子邮件客户端软件
-
邮件服务器。是电子邮件系统的基础设施。因特网上所有ISP都有邮件服务器,其功能是发送和接收邮件,同时负责维护用户的邮箱
-
电子邮件协议。包括邮件发送协议(如SMTP)和邮件读取协议(如POP3、IMAP)
HTTP
HTTP默认工作在80端口上,HTTP底层是使用TCP进行数据传输的
工作流程
-
首先服务器要运转在某个固定 IP 的 80 端口上,等待浏览器的 TCP 连接建立请求
-
服务器接受浏览器的 TCP 连接
-
浏览器请求建立连接之后,服务器才会同意连接建立请求。之后 web 服务器就有了 socket 指向它们的会话关系
-
-
浏览器向服务器发送数据报文,服务器处理完请求,返回响应报文,浏览器解析报文
-
浏览器主动关闭TCP连接(HTTP1.1不会及时关闭)
HTTP报文格式
HTTP请求方法类型
HTTP 1.0
-
GET:获取资源
-
POST:传输实体主体
-
HEAD:获取报文首部,不返回报文主体
HTTP 1.1 增加
-
PUT:传输文件
-
DELETE:删除文件
-
OPTIONS:用于询问请求 URI 资源支持的方法
Cookie
HTTP请求是无状态的,所以需要借助Cookie标识出与服务器交互过程中的每一个用户
Cookie交互过程
内容分发网络CDN
构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN 的关键技术主要有内容存储和分发技术
-
CDN一般借助DNS来完成请求转发和重定向
内容请求
假设用户主机拿到了视频的地址www.bilibili.com/video/vd_source=dd6f7a5c5a5d5f11cd0d050d98f72e3a像往常一样解析IP。本来是在权威域名服务器也就是第四步,需要返回对应的服务器IP。结果权威域名服务器指向了CDN的域名服务器。而CDN的域名服务器就会找到最近的CDN服务器IP,返回给用户。用户就拿着IP从最近的CDN服务器中获取资源。 这样接入CDN的修改变得特别的小,只需要在自己的权威服务器重定向到CDN就行了
内容修改