Chapter1 计算机网络 与 因特网:
- 现在的intenet , 计算机网络,现在已经是各种计算机 与 非传统设备联系的网络,这些设备应该称为 主机(host) 和 端系统(end system);
- 端系统(end system) 通过通信链路(communication link) 和分组交换机(packet switch) 链接到一起;实际是通过各种不同类型的物理媒体(同轴电缆,铜线,光纤,无线电频谱)连接;;
- 发送数据:发送端系统将数据分段,并将每段加上首部字节, 由此形成的信息包叫做分组(packet);
- 路由器(router) 与链路交换机(link-layer switch) 是如今比较常见的分组交换机;一个分组所经历的一些列通信链路 和 分组交换机 成为通过该网络的路径(route 或path);;
- ISP(internet Service Provider,ISP) internet 服务提供商, 为端系统提供了各种不同类型的网络接入,博爱阔线缆调制解调器 或 DSLIdigital subscriber line) ....; 底层ISP 通过国家,国际的高层ISP互联,高层ISP 通过高速光纤链路互联高速路由器组成;但他们都是依靠IP协议;
- TCP(transmission Control Protocol) & IP(internet Protocol) 是最重要的两个协议;IP 定义了再路由器 和端系统之间发送和 接收的分组格式;
- HTTP/HTTPs(web), SMTP(email), FTP(file transfer);
- 下面这段话对应用层解释的挺好的;
- 通过网络链路 与 交换机移动数据 ,基本通过两种方法: 分组交换(packet swithcing) 和电路交换(circuit switching);
- 发送报文(message),一般将报文划分成较小的数据块(packet).
- 路由器/交换机往往存在多条通信链路,那么它是如何确定目标地址的? 通过IP, 每个路由器都有一个转发表(forwarding table), 它可以将目的地址映射成输出链路。可以通过www.traceroute.org 来查看两个端点之间经过的中转点;
- 分组交换: 存储转发传输机制,需要通过缓存每个数据块,将接受完该分组的所有数据,才开始向下一个链路传输,这就是输出时延;每个分组交换机有多条链路与之相连,如果传输过程中,发现该条线路正忙,那么新的packet 必须在输出队列中等待,这是排队时延;而且如果缓存空间已满,就会出现一些packet 被丢弃,也就是分组丢失(packet lost);
- 电路交换:网络在接收方 与 发送方 之间存在一条链接; 在实际传输中,通过频分复用(FDM, frequency-Division Multiplexing) 和时分复用(TDM, Time-Division Multiplexing) 来实现, 如下图;
- 相对来讲,分组交换能有共享带宽,实现更多个复用;
- 节点总时延:包含 阶段处理时延,排队时延,传输时延,传播时延;
- 分层体系结构:各层的所有协议被称为协议栈
- 应用层:网络应用程序 及 它们的应用层协议留存的地方;(将各种类型的数据依靠不同的协议方式,转变成传输数据(转化,压缩,加密),类似将货物打包好放在库房); 运输层:TCP / UDP; (控制数据运送的方式,大小, 速度; 类似将货物安排好运送工具(汽车,火车),以及各个货物的目的地);
- TCP 向应用程序提供了面向连接的服务,确保了传递 和 流量控制(发送方、接收方速率匹配); TCP 将长报文划分为短报文,并提供堵塞控制;
- UDP 向应用提供无连接服务(因为发送报文前,发送与接收方的运输层实体没有握手),没有可靠性,流量控制,拥塞控制;
- 网络层:最有名IP 协议,该协议定义了在数据报中的各个字段以及端系统和路由器如何作用于这些字段;此外还有许多路由选择协议;(对于各种不同运送方式的定义);
- 链路层: 包含以太网,WiFi 和 电缆接入网的DOCSIS 协议,一组数据可能被不同的链路层协议处理;
- 物理层: 与上面的链路层的实际传输媒体(双绞铜线,光纤)相关,跨越链路的媒介可能是不同的,那就有许多物理层协议;
- 下面是一段数据从一个端点 到达接收端的简单过程;链路层交换机只能实现第一、二层; 路由器实现了1~3 层, 主机实现了所有5个层次;同时下图中也说明了封装的重要性,一个应用层报文被传送到运输层,加上于运送层信息Ht(例如差错检查);然后再传递到网络层,加上源 与 目的端系统地址等网络首部信息;接下来会被传给链路层,链路层会增加链路层首部信息并创建链路层帧(Link-layer frame)。所以我们看到下面每一层中信息,都具有两种类型的字段: 首部字段 和 有效载荷字段(通常是来自上一层的信息);
Chapter2 应用层:
- 现代网络体系结构中常用的应用程序体系结构: 客户-服务器(client-server architecture) , 对等(P2P) 体系结构;
- Client-Server: 经典例子Web 应用程序(还有FTP, Telnet,email),注意客户之间不直接通信;
- P2P:经典的由BitTorrent(skype, IPTV), 重要的特性之一是自扩展性;
- 进程通信:多个端点之间程序相互通信,实际是两个不同端点的进程通过计算机网络交换报文(message);
- 两个网络通信进程之间通过套接字(SOCKET)通信;
- 为了能够实现向特定主机发送分组(packet), 需要2个信息:主机地址(IP实现); 目的主机中的接收进程标识符(必须指定接受进程);
- 端口号(port number) : 给特定的应用分配特定的端口号;Web(80), email(SMTP, 25)
- 应用程序选择运输层协议:可靠性(数据丢失),吞吐量(速度),定时行(延迟),安全性(加密);
- 运输层协议: TCP , UDP;
- 安全性(SSL, Secure Sockets Layer), TCP 加强版, 实现安全性; Telnet 协议没有加密(包括口令),所以在一些场景下更适合使用SSH;
- 分层体系结构中,应用层不用担心TCP 运输层中的数据完整性实现细节;
- 应用层协议:实际就是定义发送的报文如何构造,各个字段的含义,如何发送;
- 交换报文类型, 例如请求报文 和 相应报文;
- 各类报文类型的语法;各字段含义及如何描述;
- 字段的语义,字段中包含的信息含义;
- 一个进程何时,如何发送报文,以及如何相应;
- 注意区分 网络应用 与 应用层协议;应用层协议只是网络应用的一个重要组成部分
- 例如web是一种客户-服务器 应用,该应用中包含文档格式的标准(HTML), web 浏览器,Web服务器,以及应用层协议HTTP(HTTP定义了浏览器 与 Web 服务器之间传输的报文格式 和 序列);
- HTTP(Hyper-Text Transfer Protocol): 超文本传输协议;使用TCP 作为运输层协议
- 是一个无状态协议(stateless protocol) ,不论同一个客户短时间申请多少次请求,都会作出反应;不会记录之前的状态;后面又cookie, 会给每个用户一个ID,来记录各个用户的一些活动信息;
- 非持续连接 和 持续连接: 每个请求都是单独一个TCP 连接发送就是非持续, 如果多次请求都是同一个TCP 连接发送,就是持续连接;HTTP 默认是持续连接,可以缩短没成绩建立新连接的时间 与 负担;
- 报文格式:
- 请求报文: 请求行(request line),首部行(header line),实体主题(entity body);
-
-
- 响应报文:初始状态行(status line),首部行(header line), 实体主题(entity boday); 这里有个状态码,表示请求的结果;
-
- 用户与服务器交互:cookie;因为HTTP 是无状态协议,而一个web 站点希望能够识别用户,所以通过cookie 对用户进行跟踪;需要4个组件:a. http 相应报文中一个cookie 首部行;b.http 请求报文的首部行;c.用户端保留一个cookie 文件,并由浏览器管理;d. web 服务器的后端数据库;
下图展示了cookie 跟踪的基本流程;
- Web 缓存(代理服务器): 减少对客户请求的相应时间,同时可以减少ISP 接入链路到intenet 的通信量;为了保证缓存对象是最新的,需要使用HTTP 中GET 方法;
- FTP 协议:两个并行TCP 连接,一个控制连接(control connection),用来传输如用户标识、口令等控制信息, 一个是数据连接(data connection)用来实际收发文件;
- 控制连接:贯穿整个用户会话期间,这也限制了FTP 同时保持的最大会话数;
- 数据连接:是非持续连接,每次文件传输都会新建立数据连接;
- SMTP(simple Mail Transfer Protocol) for email; 还有POP3,IMAP;
- DNS(Domain Name System,应用层协议) : 主机名 到 IP 地址转换的目录服务;人类(文字) 和 机器(数字,IP) 对于信息的敏感性不同,需要转换;使用UDP 经端口53;
- 主要提供的服务:主机别名(host aliasing); 邮件服务器别名(mail server aliasing);负载分配(load distribution); Web 服务器也有分布在多个服务器上,所以要合理分配负载避免拥堵;
- 工作机理:根DNS 服务器; 顶级域(DNS)服务器;权威DNS 服务器;以及本地DNS 服务器(local DNS server)
- 下图是一组简单示例:
- DNS 缓存:将某次查询的结果保存在本地DNS 服务器中,下次查询就可以减少延迟;但是也要注意映射关系的有效性;
- DNS 报文格式:只有两种报文,查询 与 回答报文, 二者格式相同;
Chapter3 运输层(transfer layer):
- 运输层 与 网络层: 网络层提供了主机之间的逻辑通信, 运输层则是为运行在不同主机上的进程提供了逻辑通信,运输层只是运行在端系统中的。 UDP,TCP 协议:多路复用(将不同套接字手机的数据块,封装上首部信息从而生成报文段,然后将报文段传递到网络层)与 多路分解(将运输层报文段交付正确的套接字分解) ;
- UDP: 首部只有4个字段,每个字段2个字节,共8 个字节;
- UDP 中检验和 提供了差错检测功能,但无法纠错,只能丢弃;
- UDP 好处:可以在应用层更好控制数据发送时间,无需连接建立(时间更短,开销少,能支持更多用户);
-
- TCP:首部一般是20 个字节;
- 源端口号、目的端口号 被用来多路复用、分解 ;
- 序号、确认号字段用来实现数据可靠性;难点在于如何确定丢包 和 出错验证,同时还要兼顾到速度(带宽利用率),通过超时/重传等方式来实现; 另外确认号返回的是当前最近一个未被确认的报文段号;
- 首部长度用来指示TCP 首部长度,因为有选项这一不确定因素;
- 标志字段(ACK...)
- TCP:首部一般是20 个字节;
-
- TCP 还提供了流量控制服务;通过维护一个接收窗口(receive window)实现流量控制; 三次握手(three-way handshake) 与 四次挥手;
- 三次握手是为了让客户端 与 主机端 都互相通知自己所需的都准备好了;其中第三次握手是为了有效阻止一些攻击(SYN flood attack);
- 四次挥手
- TCP 的拥堵控制:skip;
Chapter4 网络层
- 转发(forwarding) : 将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作;
- 路由选择(routing):在网络范围过程,以决定分组从源 到 目的地 所采取的端到端路径;
- 还有连接建立(connecting setup):
- 与运输层类似,网络层也提供了连接服务(虚电路网络,virtual-circuit,电话服务) 与 无连接服务(数据包网络datagram network);
- IPV4 数据包格式:
- 标识、标志、片偏移 :是IPV4 中路由器对于数据的分组分片;
- intenet 地址分配策略: 无类别域间路由选择(CIDR Classless InterDomain Routing); 形式为a.b.c.d/x 其中x 最高比特构成了IP 地址的网络部分(网络前缀);而32 -x bit 可以认为是用于取人该组织内部设备的;
- 随着越来越多的网络设备的使用,网络地址转换(Network Address Translation, NAT), 使路由器对外界隐藏了家庭网络的细节;
这样如下图所示,NAT 路由会把本地的web请求转换成新的请求发送到出去(2), 接受到返回报文时候,NAT 路由也会重新包装成对应的local IP地址的主机接收;
![](/i/l/?n=22&i=blog/2648149/202209/2648149-20220907142414816-1571353422.png)
- IPV6 的出现,解决了IPV4 面临这地址分配不够的困境;IPV6 将地址长度从32位 增加到了 128 bit; 下面是IPV6 数据报格式;
- 与IPV4 差别:不许再路由器上分片 和 重新组装;
- 如何将IPV4 迁移到 IPV6 是一个长期课题;
![](/i/l/?n=22&i=blog/2648149/202209/2648149-20220907143956736-1157934518.png)
- intenet 网络路由选择:RIP(routing information protocol) & 开放最短路优先(open shortest Path First,OSPF).
- RIP: 通过每台路由器维护一张路由选择表(routing table), 并不断转发 和 更新 该表信息,从而得到该自治系统(Autonomous System, AS)中的最短路径;
- OSPF: 核心是一个使用洪泛链路状态信息的链路状态协议 和 一个Dijkstra 最短路径算法得到整个自治系统的完整拓扑图;
- 对于跨越多个AS 的源 和 目的对 之间如何确定路径,边界网关协议(broder Gateway Protocol, BGP), 是当今internet 域间路由选择协议;
- BGP 为每个AS 提供了以下工作手段:1). 从相邻AS 处获得子网可达性信息;2). 向本AS 内如所有路由器传播这些可达信息;3). 基于可达性信息 和 AS 策略, 决定到达子网的好路由;
- 表项进入路由器的转发表过程:当一个分组到达路由器时,该分组的目的IP 地址 与 转发表中的前缀进行比较,找到最长前缀匹配的表项,该分组则转发到该前缀相关的端口;
Chapter5 : 链路层
链路层由两种不同类型的信道:广播信道; 点对点通信链路;
本节中将运行链路层协议的任何设备均称为节点(node), 包含 主机, 路由器, 交换机 和 Wifi 接入点;
下面是一个无线主机向服务器发送数据报时候,实际通过的6段链路, 发送主机 与 Wifi 之间的Wifi 链路,接入点 与 链路层交换机之间以太网链路,链路层交换机 与 路由器之间链路,两台路由器之间链路,最后是交换机 与 服务器之间的以太网链路;
链路层提供的服务:成帧(framing);链路接入(Medium Access Control:MAC 媒体访问控制);可靠交付;差错检测与纠正(通常更复杂,并且用硬件实现);其中差错检测与纠正主要由三种技术:技术校验、检验和方法、循环冗余检测;
链路层主体部分: 网络适配器(network adaptor/Network Interface Card NIC),下图就是与主机连接的网络适配器;
前面提到的两种信道类型中,对于广播链路(boardcase link)能够让多个发送点和接收节点都连接到相同的单一的广播信道;这就有可能产生某个节点接收到多个信报,为了解决这一问题,使用多路访问协议(multiple access protocol),这类协议主要分为三种类型: 信道划分协议(主要有时分多路复用(TDM) 和 频分多路复用(FDM)以及 码分多址(Code Division Multiple Access CDMA))、 随机接入协议(random access protocol) (常见的有时隙ALOHA协议 和 载波侦听多路访问(CSMA) )和 轮流协议(takiing-turns protocol);
地址解析协议(ARP address resolution protocol): 主要为了解析网络层地址 与 链路层地址之间的转换关系,在链路层中MAC 地址应用的更为广泛;在一个内部子网中,主机或路由器存储了ARP 表,如果向某个主机发送数据报,可以通过ARP 表解析目的MAC 地址;如果要发送到子网外,需要通过路由器实现网络层传输到目的地接口,然后在传递给对应的适配器;
以太网:下图是以太网帧结构,注意所有以太网技术都是向网络层提供无连接服务(类似UDP),而且是不可靠服务;
链路层交换机:
其存在缓存用以解决多个信息传送来导致速率超出接口链路容量的问题;
另外主要是过滤和 转发功能;其中信息包到达一个目的地址的x接口时候,主要有三种可能情况,如果交换机表中没有目的地址广播该帧;如果目的地址与接口 是一对联系的,丢弃该帧实现过滤功能;如果地址与接口没有关联,通过缓存完成转发功能;
交换机是即插即用(Plug and play device) ,不同于广播链路的是:1. 消除碰撞;2. 异质的链路;3.管理;与路由器相比较,它通过MAC地址转发分组,是第二层分组,而路由器通过网络层地址转发分组,是第三层的分组交换;
另外有虚拟局域网 以及 数据中心网络 都是对于链路层进行分等级体系结构实现数据的转化传输;
标签:协议,读书笔记,报文,计算机网络,自顶向下,链路,分组,链路层,路由器 From: https://www.cnblogs.com/ChunboBlog/p/16650244.html