计算机网络自顶向下
第一章 概论
-
协议:定义了两个通信实体之间交换报文的格式、顺序,以及发送报文和接受报文或其他事件时采用的动作。
-
网络边缘:端系统
-
路由器和链路交换机的区别:路由器涉及到了网络第三层:物理层、数据链路层、网络层;链路交换机只涉及到第二层网络:物理层、数据链路层。
-
网络层次的任务:错误控制、片段化、流量控制、重组、多任务、连接
-
ISP:互联网提供商
-
五层网络:应用层:应用程序想发送给传输层数据;传输层:传输单位:报文段、由传输层生成并封装有传输层头信息的应用程序报文;网络层:传输单位:数据报、封装有网络层信息的传输层报文;
数据链路层:封装有链路层信息的网络层数据报,传输单位:帧;物理层:比特位 -
端到端信息传输:分块-加头信息(目标IP地址、数据、校验)-路由
第二章 应用层
-
应用层协议 :http、ftp、smtp、dns、pop3
-
应用程提供服务 :可靠传输、吞吐量、定时、安全
-
网络应用程序体系 :客户端-服务器体系:Web应用、搜索引擎、p2p体系:因特网电话、视频会议
-
客户端和服务端 ,在C-S体系中,发起请求的是客户端,等待连接的是服务器;在p2p体系中,发送资源的是服务器,接受资源的是客户端。
-
套接字 :应用进程通向网络接口的神奇之门。
-
不同端系统的进程的通信:为了识别,不同的端系统上不同的进程,需要一个唯一辨识作为寻址:主机地址和端口号(在传输层协议报文中含有IP和端口号)
作用是生成应用程报文,协助传输层完成不同端系统中的应用程序间的逻辑通信??? -
HTTP协议 :超文本传输协议,是Web应用的核心,由两个程序实现,一个是客户端程序一个是服务器程序,客户端程序和服务器程序在不同的端系统上面运行,通过HTTP报文进行会话。Web页面是一个对象,可以是HTML文件、图片、Java小程序、视频片段等。
-
特征 :使用TCP作为传输层的支撑协议,所以HTTP协议是有连接的,可靠传输的协议;不保存客户的相关信息,所以是无状态(没记性)得协议,后使用Cookie和Session技术作为补充;有持续连接和非持续连接(对于新的HTTP请求另外开辟一条新的连接)两种模式,默认状态为持续连接
-
非持续连接的缺点 :1)每个请求的对象必须建立一个新的连接,客户端和服务器都要分配相应的TCP缓冲和保持TCP变量,对于一台要承受来自大量客户端请求,压力巨大;2)一个TCP连接需要两个RTT,即每个对象的获取都要禁受两倍的时延。
-
HTTP的报文格式 :1)HTTP请求报文:请求行+首部行+数据实体。请求行:HTTP协议版本+URL+请求方法(GET、POST、HEAD、DELETE、PUT)、首部行:首部字段:Connection、User-agent等、数据实体:略
2)HTTP相应报文:状态行+首部行+数据实体。状态行:协议版本、状态码、首部字段:等等,挺多的、数据实体:略。 -
GET方法和POST方法的区别 :GET多用于客户端向服务器请求获得资源、POST方法多用于资源的传送(S->C or C->S)、GET把方法参数放在URL里面不够安全,POST放在Requestbody中、GET方法中的参数长度有限制,POST中无限制、POST是FORM表单默认的提交方法、GET方法参数会保留在浏览器中,POST的不会。
-
Cookie技术 :在客户端首次访问一个Web服务器时,服务器会针对这个客户端生成一个Cookie标识,作为一个表项存放在服务器后端的数据库中,并在HTTP报文响应报文的首部字段Set-Cookie中存放CookieID,随响应报文传送给客户端端,再客户端后服务器的后续的访问中HTTP请求报文中会携带CookieID,服务器收到HTTP报文之后,根据CookieID,在后端数据库中,查询到相应的表项,从而识别出客户端主机,保存当前状态和得到之前的状态。
-
SMTP协议 :因特网电子邮件的核心,简单邮件传输协议,运行在TCP协议之上的,报文格式:首部字段:FROM、TO、SUBJECT、报文实体。
-
SMTP和HTTP的对比 :都是运行在网络应用层的协议,一个是针对Web应用一个是电子邮件服务;HTTP是拉协议、SMTP是推协议;SMTP针对的是7比特ASCII码格式报文,HTTP可以是二级制六可以是ASCII。
-
DNS协议 :直观作用:把域名地址映射为IP地址(为什么,因为域名对于人类更好记忆,而定长的、层次化的IP地址对于路由器更容易管理)
-
DNS工作原理 :运行在TCP协议之上,黑盒子:主机名(域名)->DNS服务器->包含主机名的IP地址。采用层次化的域名管理,没有一台DNS服务器拥有了所有主机的映射
第三章 运输层
- 职责 : 实现不同端系统上应用程序的逻辑通信,而网络层则是为不同端系统之间提供逻辑通信。
- 运输层的必要功能 :多路复用(信件在同兄弟姐妹之间的收集)和多路分用(新建在堂兄弟姐妹之间分配)。多路复用就是把不同应用程序的报文交给同一个传输层协议去传送;多路分用:到达客户端的报文传输层根据端口信息分配数据给各个应用程序,其中中间环节涉及套接字。
- 有连接和无连接的传输层协议 :无连接:不需要握手连接、不知道信息传输过程有没有丢失,有没有到达,信息到达时也可能是乱序的、是不可靠的。
- 无连接运输协议UDP :仅仅提供最基本的多路复用/多路分用和差错检验功能。UDP报文:源端口号+目的端口号+检验和+长度+应用报文
- UDP的使用 :没有TCP的拥塞控制机制、在数据容忍丢失情况下,发送速度不受限;不需要建立连接的场景下(下载)会使用更少时延;首部字段只占用8个字节、而TCP需要20字节;无连接状态,客户端和服务器不要额外维护连接信息,一个运行在UDP的Web应用,一般能支持更多的活跃用户。
- 有连接运输协议TCP :面向连接的、除了提供多路复用/多路分用、差错检验之外,还提供了,可靠传输、拥塞控制
- 可靠数据传输原理 :1)自动重传协议:基于肯定/否定确认机制的重传机制的协议;2)停等协议:差错检验、肯定/否定确认、重传;3)比特交替协议:针对停等协议的ACK/NAK受损丢失和数据丢包问题,增加了序号 、定时器 来增强协议功能。最后针对信道利用率,采用流水线工作模式,使用了有滑动窗口 、选择重传 进行数据的差错恢复 ,TCP首部字段rwnd就是滑动窗口,所以,数据传输的可靠性是靠这些机制来完成的:差错检验(sumcheck) 、肯定/否定确认(累计确认) 、序号 、重传 、定时器(定义丢包) 、滑窗、选择重传(差错恢复) 。
- TCP报文结构 :源端口号+目的端口号+序号+确认号+长度+接受窗口(差错恢复)+报文+差错检验(检验和)
- TCP连接管理 :TCP连接的建立和拆除。三次握手 :三次握手是客户端和服务端建立TCP连接的三次交互过程,通过三次握手,确认客户端和服务器的数据发送能力和数据接受能力:首先客户端发送一个特殊的SYN同步TCP报文、同时分配一个初始序号,客户端进入同步发送(SYN_SEND)状态,服务端接受到了SYN报文,就可以确定了客户端的数据发送能力,并返回ACKTCP报文,在序号上加一,服务端进入了同步接受状态(SYN_RCVD),第二次握手服务器向客户端展示了自己的数据发送能力和数据接受能力,最后,客户端收到来自服务器的ACK报文后,就可以向服务器进行第三次握手了,在向服务器确认自己数据接受能力的同时,这次握手可以携带着真实传输的数据报文了。四次挥手 :四次挥手是客户端拆除连接进行的交互过程:要结束连接的客户端向服务器发送FIN报文,初始序号,客户端进入FIN_WAIT1状态,服务器接收FIN报文进入CLOSE_WAIT状态,向客户端发送ACK报文通知客户端自己已经收到断开将请求了,但是可以进入等待最后的数据交付的FIN_WAIT2状态,等待数据交付完成,服务器向客户端发送FIN报文断开请求,服务器进入LAST_ACK状态,客户端接收到断开请求之后,向服务器返回一个ACK报文之后没经过2MSL时间就进入断开状态了,服务器收到来自客户端的断开确认ACK报文,也进入了断开状态。
- 拥塞控制 :当一个报文丢失的时候以为着网络有了拥塞,需要减少发送方的发送速率。报文结构中使用接收窗口的长度控制,所以rwnd的长度是会变化的。
第四章 网络层
-
印象 :完成不同端系统之间的逻辑通信,逻辑上分成数据平面和控制平面,数据平面:执行路由协议,响应上下链路与进程控制器通信并执行管理功能。控制平面:路由选择,确定数据包从源地址到目的地址的路径。
-
转发和路由的区别 :是一种本地行为,从路由器的一个入口到另一个出口;路由:在网络范围内,确定数据包从源地址到目的地址的路径选择。
-
路由转发表 :保存条目,确定即将通过切换转发到达的输出链路
-
网络服务模型 :尽力而为的服务:1)确保交付,确保交付分组到达目的地;2)交付时延的上界;3)确保最小带宽;4)安全性
-
路由器结构 :输入端口、交换结构、输出端口、路由选择协议
-
网络层协议 :IPv4/IPv4、DHCP、NAT、ICMP(差错控制、IP网络管理)、SNMP
-
IPv4数据报 :协议版本+首部长度+数据报长度+服务类型+(标识、标志、片偏移+协议(交付给上层的UDP还是TCP)+首部检验和+源IP地址+目的IP地址+有效载荷);由于链路层帧传输有MTU 的限制,所以当数据报过大时,需要对数据报进行分片
-
IPv4编址 :长度为32bit,也就是4个字节,采用点分十进制 的写法。子网掩码 在一个局域子网中,IPv4/6地址的公共前缀部分如:223.1.1.0/24、在寻址中采用最长前缀匹配匹配;网关 :接入外网的第一条路由器的接口的IP地址
;分类编址 :A、B、C地址的网络部分被限制为8、16、24bit
DHCP :动态主机分配协议,允许主机自动获取一个IP地址,特点是即插即用、零配置 ,DHCP是一个客户-服务器协议,每个子网将具有一台DHCP服务器,要入网的主机通过DHCP服务器动态分配一个网络IP。IP分配过程 :1)DHCP发现,主机通过广播地址(255.255.255.255)发送DHCP发现报文 ,找到子网的一个或多个DHCP服务器;2)服务器提供,服务器收到DHCP发现报文后,继续使用广播地址发送DHCP提供报文 ;3)客户端选取收到一个或多个的DHCP提供报文后,选取合适的DHCP服务器,发送DHCP请求报文 ;4)服务端收到DHCP请求后,给客户端返回一个HDC确认报文 。 -
网络地址转换协议NAT :用于家庭网络,仅仅针对专用网络中的设备有意义,本质:使得路由器对外界隐藏了家庭网络的细节,解决了IP地址不够的问题。
-
IPv6 :差不多,采用128bit编址,IPv4通过隧道的方式向IPv6转移,即把IPv6的报文封装进IPv4中去。
-
ICMP :差错报告,ping同一个服务器之类,还有一个源抑制报文,即拥塞控制。
第五章 链路层
- 职责 :将数据报从一个网络节点一同到另一个网络节点,功能特点 :数据报封装成帧,可靠交付(可能)、差错检测和纠正(可能)。
- 差错检验和纠正 :奇偶校验、循环冗余检测
- 多路访问 :载波监听
- 链路层寻址 :每个网络接口(适配器)都具有唯一的LAN(MAC)地址 ,这个MAC地址将会封装在链路帧里面
- ARP :类似DNS协议,不同的是,DNS为因特网中任何地方的主机解析主机名,而ARP只为同一个子网上的主机和路由接口解析地址。每台主机和路由器都有一个ARP表 ,发送方使用广播地址,给子网上的每台主机或路由器方法一个ARP查询分组 ,一旦有查询到合适的IP-MAC映射,则以一个标准帧 返回。但是,如何查询到外网主机的MAC地址呢??先把数据转发到第一跳路由器(网关路由器) ,继续使用ARP协议查询MAC地址。
- 交换机 :自学习
- Web页面请求历程 :首先,我们有一台新拆封的电脑,没有IP地址,就上不了网,首先需要先联网,先根据DHCP协议 获取一个IP地址:操作系统生成一个DHCH发现报文,并将这个报文封进UDP报文段中,通过广播地址
