当前位置:首页 » 网络连接 » 计算机网络应用层rtt
扩展阅读
苹果手机有4k修复软件吗 2025-09-29 04:47:16
realme网络异常无法打开 2025-09-29 04:46:40

计算机网络应用层rtt

发布时间: 2023-05-01 11:15:48

计算机网络知识点

一、计算机网络概述

1.1 计算机网络的分类

按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);

按照网络使用者:公用网络、专用网络。

1.2 计算机网络的层次结构

TCP/IP四层模型与OSI体系结构对比:

1.3 层次结构设计的基本原则

各层之间是相互独立的;

每一层需要有足够的灵活性;

各层之间完全解耦。

1.4 计算机网络的性能指标

速率:bps=bit/s 时延:发送时延、传播时延、排队时延、处理时延 往返时间RTT:数据报文在端到端通信中的来回一次的时间。

二、物理层

物理层的作用:连接不同的物理设备,传输比特流。该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输。

物理层设备:

中继器【Repeater,也叫放大器】:同一局域网的再生信号;两端口的网段必须同一协议;5-4-3规程:10BASE-5以太网中,最多串联4个中继器,5段中只能有3个连接主机;

集线器:同一局域网的再生、放大信号(多端口的中继器);半双工,不能隔离冲突域也不能隔离广播域。

信道的基本概念:信道是往一个方向传输信息的媒体,一条通信电路包含一个发送信道和一个接受信道。

单工通信信道:只能一个方向通信,没有反方向反馈的信道;

半双工通信信道:双方都可以发送和接受信息,但不能同时发送也不能同时接收;

全双工通信信道:双方都可以同时发送和接收。

三、数据链路层

3.1 数据链路层概述

数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。数据链路层在不可靠的物理介质上提供可靠的传输。

该层的作用包括: 物理地址寻址、数据的成帧、流量控制、数据的检错、重发 等。

有关数据链路层的重要知识点:

数据链路层为网络层提供可靠的数据传输;

基本数据单位为帧;

主要的协议:以太网协议;

两个重要设备名称:网桥和交换机。

封装成帧:“帧”是 数据链路层 数据的基本单位:

透明传输:“透明”是指即使控制字符在帧数据中,但是要当做不存在去处理。即在控制字符前加上转义字符ESC。

3.2 数据链路层的差错监测

差错检测:奇偶校验码、循环冗余校验码CRC

奇偶校验码–局限性:当出错两位时,检测不到错误。

循环冗余检验码:根据传输或保存的数据而产生固定位数校验码。

3.3 最大传输单元MTU

最大传输单元MTU(Maximum Transmission Unit),数据链路层的数据帧不是无限大的,数据帧长度受MTU限制.

路径MTU:由链路中MTU的最小值决定。

3.4 以太网协议详解

MAC地址:每一个设备都拥有唯一的MAC地址,共48位,使用十六进制表示。

以太网协议:是一种使用广泛的局域网技术,是一种应用于数据链路层的协议,使用以太网可以完成相邻设备的数据帧传输:

局域网分类:

Ethernet以太网IEEE802.3:

以太网第一个广泛部署的高速局域网

以太网数据速率快

以太网硬件价格便宜,网络造价成本低

以太网帧结构:

类型:标识上层协议(2字节)

目的地址和源地址:MAC地址(每个6字节)

数据:封装的上层协议的分组(46~1500字节)

CRC:循环冗余码(4字节)

以太网最短帧:以太网帧最短64字节;以太网帧除了数据部分18字节;数据最短46字节;

MAC地址(物理地址、局域网地址)

MAC地址长度为6字节,48位;

MAC地址具有唯一性,每个网络适配器对应一个MAC地址;

通常采用十六进制表示法,每个字节表示一个十六进制数,用 - 或 : 连接起来;

MAC广播地址:FF-FF-FF-FF-FF-FF。

四、网络层

网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。数据交换技术是报文交换(基本上被分组所替代):采用储存转发方式,数据交换单位是报文。

网络层中涉及众多的协议,其中包括最重要的协议,也是TCP/IP的核心协议——IP协议。IP协议非常简单,仅仅提供不可靠、无连接的传送服务。IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。

与IP协议配套使用实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP。具体的协议我们会在接下来的部分进行总结,有关网络层的重点为:

1、网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能;

2、基本数据单位为IP数据报;

3、包含的主要协议:

IP协议(Internet Protocol,因特网互联协议);

ICMP协议(Internet Control Message Protocol,因特网控制报文协议);

ARP协议(Address Resolution Protocol,地址解析协议);

RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)。

4、重要的设备:路由器

路由器相关协议

4.1 IP协议详解

IP网际协议是 Internet 网络层最核心的协议。虚拟互联网络的产生:实际的计算机网络错综复杂;物理设备通过使用IP协议,屏蔽了物理网络之间的差异;当网络中主机使用IP协议连接时,无需关注网络细节,于是形成了虚拟网络。

IP协议使得复杂的实际网络变为一个虚拟互联的网络;并且解决了在虚拟网络中数据报传输路径的问题。

其中,版本指IP协议的版本,占4位,如IPv4和IPv6;首部位长度表示IP首部长度,占4位,最大数值位15;总长度表示IP数据报总长度,占16位,最大数值位65535;TTL表示IP数据报文在网络中的寿命,占8位;协议表明IP数据所携带的具体数据是什么协议的,如TCP、UDP。

4.2 IP协议的转发流程

4.3 IP地址的子网划分

A类(8网络号+24主机号)、B类(16网络号+16主机号)、C类(24网络号+8主机号)可以用于标识网络中的主机或路由器,D类地址作为组广播地址,E类是地址保留。

4.4 网络地址转换NAT技术

用于多个主机通过一个公有IP访问访问互联网的私有网络中,减缓了IP地址的消耗,但是增加了网络通信的复杂度。

NAT 工作原理:

从内网出去的IP数据报,将其IP地址替换为NAT服务器拥有的合法的公共IP地址,并将替换关系记录到NAT转换表中;

从公共互联网返回的IP数据报,依据其目的的IP地址检索NAT转换表,并利用检索到的内部私有IP地址替换目的IP地址,然后将IP数据报转发到内部网络。

4.5 ARP协议与RARP协议

地址解析协议 ARP(Address Resolution Protocol):为网卡(网络适配器)的IP地址到对应的硬件地址提供动态映射。可以把网络层32位地址转化为数据链路层MAC48位地址。

ARP 是即插即用的,一个ARP表是自动建立的,不需要系统管理员来配置。

RARP(Reverse Address Resolution Protocol)协议指逆地址解析协议,可以把数据链路层MAC48位地址转化为网络层32位地址。

4.6 ICMP协议详解

网际控制报文协议(Internet Control Message Protocol),可以报告错误信息或者异常情况,ICMP报文封装在IP数据报当中。

ICMP协议的应用:

Ping应用:网络故障的排查;

Traceroute应用:可以探测IP数据报在网络中走过的路径。

4.7网络层的路由概述

关于路由算法的要求:正确的完整的、在计算上应该尽可能是简单的、可以适应网络中的变化、稳定的公平的。

自治系统AS: 指处于一个管理机构下的网络设备群,AS内部网络自治管理,对外提供一个或多个出入口,其中自治系统内部的路由协议为内部网关协议,如RIP、OSPF等;自治系统外部的路由协议为外部网关协议,如BGP。

静态路由: 人工配置,难度和复杂度高;

动态路由:

链路状态路由选择算法LS:向所有隔壁路由发送信息收敛快;全局式路由选择算法,每个路由器计算路由时,需构建整个网络拓扑图;利用Dijkstra算法求源端到目的端网络的最短路径;Dijkstra(迪杰斯特拉)算法

距离-向量路由选择算法DV:向所有隔壁路由发送信息收敛慢、会存在回路;基础是Bellman-Ford方程(简称B-F方程);

4.8 内部网关路由协议之RIP协议

路由信息协议 RIP(Routing Information Protocol)【应用层】,基于距离-向量的路由选择算法,较小的AS(自治系统),适合小型网络;RIP报文,封装进UDP数据报。

RIP协议特性:

RIP在度量路径时采用的是跳数(每个路由器维护自身到其他每个路由器的距离记录);

RIP的费用定义在源路由器和目的子网之间;

RIP被限制的网络直径不超过15跳;

和隔壁交换所有的信息,30主动一次(广播)。

4.9 内部网关路由协议之OSPF协议

开放最短路径优先协议 OSPF(Open Shortest Path First)【网络层】,基于链路状态的路由选择算法(即Dijkstra算法),较大规模的AS ,适合大型网络,直接封装在IP数据报传输。

OSPF协议优点:

安全;

支持多条相同费用路径;

支持区别化费用度量;

支持单播路由和多播路由;

分层路由。

RIP与OSPF的对比(路由算法决定其性质):

4.10外部网关路由协议之BGP协议

BGP(Border Gateway Protocol)边际网关协议【应用层】:是运行在AS之间的一种协议,寻找一条好路由:首次交换全部信息,以后只交换变化的部分,BGP封装进TCP报文段.

五、传输层

第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。

传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输。在这一层,信息传送的协议数据单元称为段或报文。

网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而传输层则负责将数据可靠地传送到相应的端口。

有关网络层的重点:

传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;

包含的主要协议:TCP协议(Transmission Control Protocol,传输控制协议)、UDP协议(User Datagram Protocol,用户数据报协议);

重要设备:网关。

5.1 UDP协议详解

UDP(User Datagram Protocol: 用户数据报协议),是一个非常简单的协议。

UDP协议的特点:

UDP是无连接协议;

UDP不能保证可靠的交付数据;

UDP是面向报文传输的;

UDP没有拥塞控制;

UDP首部开销很小。

UDP数据报结构:

首部:8B,四字段/2B【源端口 | 目的端口 | UDP长度 | 校验和】 数据字段:应用数据

5.2 TCP协议详解

TCP(Transmission Control Protocol: 传输控制协议),是计算机网络中非常复杂的一个协议。

TCP协议的功能:

对应用层报文进行分段和重组;

面向应用层实现复用与分解;

实现端到端的流量控制;

拥塞控制;

传输层寻址;

对收到的报文进行差错检测(首部和数据部分都检错);

实现进程间的端到端可靠数据传输控制。

TCP协议的特点:

TCP是面向连接的协议;

TCP是面向字节流的协议;

TCP的一个连接有两端,即点对点通信;

TCP提供可靠的传输服务;

TCP协议提供全双工通信(每条TCP连接只能一对一);

5.2.1 TCP报文段结构:

最大报文段长度:报文段中封装的应用层数据的最大长度。

TCP首部:

序号字段:TCP的序号是对每个应用层数据的每个字节进行编号

确认序号字段:期望从对方接收数据的字节序号,即该序号对应的字节尚未收到。用ack_seq标识;

TCP段的首部长度最短是20B ,最长为60字节。但是长度必须为4B的整数倍

TCP标记的作用:

5.3 可靠传输的基本原理

基本原理:

不可靠传输信道在数据传输中可能发生的情况:比特差错、乱序、重传、丢失

基于不可靠信道实现可靠数据传输采取的措施:

差错检测:利用编码实现数据包传输过程中的比特差错检测 确认:接收方向发送方反馈接收状态 重传:发送方重新发送接收方没有正确接收的数据 序号:确保数据按序提交 计时器:解决数据丢失问题;

停止等待协议:是最简单的可靠传输协议,但是该协议对信道的利用率不高。

连续ARQ(Automatic Repeat reQuest:自动重传请求)协议:滑动窗口+累计确认,大幅提高了信道的利用率。

5.3.1TCP协议的可靠传输

基于连续ARQ协议,在某些情况下,重传的效率并不高,会重复传输部分已经成功接收的字节。

5.3.2 TCP协议的流量控制

流量控制:让发送方发送速率不要太快,TCP协议使用滑动窗口实现流量控制。

5.4 TCP协议的拥塞控制

拥塞控制与流量控制的区别:流量控制考虑点对点的通信量的控制,而拥塞控制考虑整个网络,是全局性的考虑。拥塞控制的方法:慢启动算法+拥塞避免算法。

慢开始和拥塞避免:

【慢开始】拥塞窗口从1指数增长;

到达阈值时进入【拥塞避免】,变成+1增长;

【超时】,阈值变为当前cwnd的一半(不能<2);

再从【慢开始】,拥塞窗口从1指数增长。

快重传和快恢复:

发送方连续收到3个冗余ACK,执行【快重传】,不必等计时器超时;

执行【快恢复】,阈值变为当前cwnd的一半(不能<2),并从此新的ssthresh点进入【拥塞避免】。

5.5 TCP连接的三次握手(重要)

TCP三次握手使用指令:

面试常客:为什么需要三次握手?

第一次握手:客户发送请求,此时服务器知道客户能发;

第二次握手:服务器发送确认,此时客户知道服务器能发能收;

第三次握手:客户发送确认,此时服务器知道客户能收。

建立连接(三次握手):

第一次: 客户向服务器发送连接请求段,建立连接请求控制段(SYN=1),表示传输的报文段的第一个数据字节的序列号是x,此序列号代表整个报文段的序号(seq=x);客户端进入 SYN_SEND (同步发送状态);

第二次: 服务器发回确认报文段,同意建立新连接的确认段(SYN=1),确认序号字段有效(ACK=1),服务器告诉客户端报文段序号是y(seq=y),表示服务器已经收到客户端序号为x的报文段,准备接受客户端序列号为x+1的报文段(ack_seq=x+1);服务器由LISTEN进入SYN_RCVD (同步收到状态);

第三次: 客户对服务器的同一连接进行确认.确认序号字段有效(ACK=1),客户此次的报文段的序列号是x+1(seq=x+1),客户期望接受服务器序列号为y+1的报文段(ack_seq=y+1);当客户发送ack时,客户端进入ESTABLISHED 状态;当服务收到客户发送的ack后,也进入ESTABLISHED状态;第三次握手可携带数据;

5.6 TCP连接的四次挥手(重要)

释放连接(四次挥手)

第一次: 客户向服务器发送释放连接报文段,发送端数据发送完毕,请求释放连接(FIN=1),传输的第一个数据字节的序号是x(seq=x);客户端状态由ESTABLISHED进入FIN_WAIT_1(终止等待1状态);

第二次: 服务器向客户发送确认段,确认字号段有效(ACK=1),服务器传输的数据序号是y(seq=y),服务器期望接收客户数据序号为x+1(ack_seq=x+1);服务器状态由ESTABLISHED进入CLOSE_WAIT(关闭等待);客户端收到ACK段后,由FIN_WAIT_1进入FIN_WAIT_2;

第三次: 服务器向客户发送释放连接报文段,请求释放连接(FIN=1),确认字号段有效(ACK=1),表示服务器期望接收客户数据序号为x+1(ack_seq=x+1);表示自己传输的第一个字节序号是y+1(seq=y+1);服务器状态由CLOSE_WAIT 进入 LAST_ACK (最后确认状态);

第四次: 客户向服务器发送确认段,确认字号段有效(ACK=1),表示客户传输的数据序号是x+1(seq=x+1),表示客户期望接收服务器数据序号为y+1+1(ack_seq=y+1+1);客户端状态由FIN_WAIT_2进入TIME_WAIT,等待2MSL时间,进入CLOSED状态;服务器在收到最后一次ACK后,由LAST_ACK进入CLOSED;

为什么需要等待2MSL?

最后一个报文没有确认;

确保发送方的ACK可以到达接收方;

2MSL时间内没有收到,则接收方会重发;

确保当前连接的所有报文都已经过期。

六、应用层

为操作系统或网络应用程序提供访问网络服务的接口。应用层重点:

数据传输基本单位为报文;

包含的主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。

6.1 DNS详解

DNS(Domain Name System:域名系统)【C/S,UDP,端口53】:解决IP地址复杂难以记忆的问题,存储并完成自己所管辖范围内主机的 域名 到 IP 地址的映射。

域名解析的顺序:

【1】浏览器缓存,

【2】找本机的hosts文件,

【3】路由缓存,

【4】找DNS服务器(本地域名、顶级域名、根域名)->迭代解析、递归查询。

IP—>DNS服务—>便于记忆的域名

域名由点、字母和数字组成,分为顶级域(com,cn,net,gov,org)、二级域(,taobao,qq,alibaba)、三级域(www)(12-2-0852)

6.2 DHCP协议详解

DHCP(Dynamic Configuration Protocol:动态主机设置协议):是一个局域网协议,是应用UDP协议的应用层协议。作用:为临时接入局域网的用户自动分配IP地址。

6.3 HTTP协议详解

文件传输协议(FTP):控制连接(端口21):传输控制信息(连接、传输请求),以7位ASCII码的格式。整个会话期间一直打开。

HTTP(HyperText Transfer Protocol:超文本传输协议)【TCP,端口80】:是可靠的数据传输协议,浏览器向服务器发收报文前,先建立TCP连接,HTTP使用TCP连接方式(HTTP自身无连接)。

HTTP请求报文方式:

GET:请求指定的页面信息,并返回实体主体;

POST:向指定资源提交数据进行处理请求;

DELETE:请求服务器删除指定的页面;

HEAD:请求读取URL标识的信息的首部,只返回报文头;

OPETION:请求一些选项的信息;

PUT:在指明的URL下存储一个文档。

6.3.1 HTTP工作的结构

6.3.2 HTTPS协议详解

HTTPS(Secure)是安全的HTTP协议,端口号443。基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护

原文地址:https://blog.csdn.net/Royalic/article/details/119985591

② 计算机网络-Http/Https基础

一、前言

主要包括:1、http基础:TCP/IP,TCP协议,IP协议,DNS协议,URI与URL;

2、http协议:http报文,http方法,http状态码,常见问题

名词解释:

(1)HTTP(HyperText Transfer Protocol)超文本传输协议

(2)URL(Uniform Resource Locator)统一资源定位符

(3)URI(Uniform Resource Identifer)统一资源标识符

(4)TCP(Transmission Control Protocol)传输控制协议

(5)IP(Internet Protocol)网际协议

(6)UDP(User Data Protocol)用户数据报协议

(7)MAC地址(Media Access Control)媒体访问控制地址/物理地址/硬件地址

(8)ARP协议(Address Resolution Protocol)地址解析协议

二、HTTP基础

2.1TCP/IP

TCP/IP是互联网相关的各类协议族的总称,而http是TCP/IP协议族中的一个子集。

TCP/IP协议族可以分为四层:

(1)应用层:决定向用户提供 应用服务时通信的活动 ,TCP/IP协议族内预存了各类通用的应用服务,如:http,ftp,dns等。

(2)传输层:提供处于网络连接中的两台计算机之间的 数据传输 ,包含两个协议:tcp,udp。

(3)网络层:用来处理 网络上流动的数据包 ,在众多的选项中选择一条传输线路,将数据包传送到对方计算机。包含的协议:IP协议。

(4)数据链路层:用来 处理连接网络的硬件 部分。

2.2 IP协议

IP协议属于网络层,负责处理网络上流动的数据包。为了保证传送成功,需要满足各类条件,其中两个重要的条件时IP地址和MAC地址。

(1)IP地址,指明了节点被分配到的地址;

(2)MAC地址,指网卡所属的固定地址;

(3)IP地址可以和MAC地址进行配对,IP地址可以变换,但是MAC地址基本上不会更改;

(4)使用ARP地址解析协议可以根据通信方的IP地址反查出对应的MAC地址

2.3 TCP协议

TCP协议位于传输层,提供 可靠的字节流服务 (也就是说,将大数据分隔成以报文段为单位的数据包进行管理)。

为了确保数据准确无误的到达目标处,TCP协议通常采用三次握手策略。

如果在握手的过程中某一个阶段莫名的 中断 了, TCP协议会再次以相同的顺序发送相同的数据包

2.4DNS协议

DNS协议位于应用层,提供域名到IP地址之间的解析服务。

2.5 URI和URL

URI是某一个协议方案表示的 资源的定位标识符 ,协议方案是指访问资源所使用的协议类型,如:http,ftp,file等。

URL用字符串标识某一个互联网资源 ,而 URL表示资源的地点,URL是URI的子集。

2.6 HTTP协议

HTTP协议用于客户端和服务器端之间的通信。请求必定由客户端发出,而服务器端回复响应。

HTTP协议不保存状态,为 无状态协议 。这是为了更快的处理大量事务,确保协议的可伸缩性而特意设计的。

但是随着Web的不断发展,这一特性也引发了一些问题,如:如何保持登录状态、如何记录用户信息等,为了解决这一问题,引入了Cookie技术。

2.6.1常见状态码

2XX 成功

200 OK,表示从客户端发来的请求在服务器端被正确处理

204 No content,表示请求成功,但响应报文不含实体的主体部分

205 Reset Content,表示请求成功,但响应报文不含实体的主体部分,但是与 204 响应不同在于要求请求方重置内容

206 Partial Content,进行范围请求

3XX 重定向

301 moved permanently,永久性重定向,表示资源已被分配了新的 URL

302 found,临时性重定向,表示资源临时被分配了新的 URL

303 see other,表示资源存在着另一个 URL,应使用 GET 方法获取资源

304 not modified,表示服务器允许访问资源,但因发生请求未满足条件的情况

307 temporary redirect,临时重定向,和302含义类似,但是期望客户端保持请求方法不变向新的地址发出请求

4XX 客户端错误

400 bad request,请求报文存在语法错误

401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息

403 forbidden,表示对请求资源的访问被服务器拒绝

404 not found,表示在服务器上没有找到请求的资源

5XX 服务器错误

500 internal sever error,表示服务器端在执行请求时发生了错误

501 Not Implemented,表示服务器不支持当前请求所需要的某个功能

503 service unavailable,表明服务器暂时处于超负载或正在停机维护,无法处理请求

2.6.2HTTP报文头部(HTTP首部)

| 通用字段 | ** 作用** |
| Cache-Control | 控制缓存的行为 |
| Connection | 浏览器想要优先使用的连接类型,比如:keep-alive |
| Date | 创建报文时间 |
| Pragma | 报文指令 |
| Via | 代理服务器相关信息 |
| Transfer-Encoding | 传输编码方式 |
| Upgrade | 要求客户端升级协议 |
| Warning | 在内容中可能存在错误 |

| ** 请求字段** | ** 作用** |
| Accept | 能正确接收的媒体类型 |
| Accept-Charset | 能正确接收的字符集 |
| Accept-Encoding | 能正确接收的编码格式列表 |
| Accept-Language | 能正确接收的语言列表 |
| Expect | 期待服务端的指定行为 |
| From | 请求方邮箱地址 |
| Host | 服务器的域名 |
| If-Match | 两端资源标记比较 |
| If-Modified-Since | 本地资源未修改返回 304(比较时间) |
| If-None-Match | 本地资源未修改返回 304(比较标记) |
| User-Agent | 客户端信息 |
| Max-Forwards | 限制可被代理及网关转发的次数 |
| Proxy-Authorization | 向代理服务器发送验证信息 |
| Range | 请求某个内容的一部分 |

| Referer | 示浏览器所访问的前一个页面 |
| TE | 传输编码方式 |

| 响应字段 | 作用 |
| Accept-Ranges | 是否支持某些种类的范围 |
| Age | 资源在代理缓存中存在的时间 |
| ETag | 资源标识 |
| Location | 客户端重定向到某个 URL |
| Proxy-Authenticate | 向代理服务器发送验证信息 |
| Server | 服务器名字 |
| WWW-Authenticate | 获取资源需要的验证信息 |

| 实体字段 | 作用 |
| Allow | 资源的正确请求方式 |
| Content-Encoding | 内容的编码格式 |
| Content-Language | 内容使用的语言 |
| Content-Length | request body 长度 |
| Content-Location | 返回数据的备用地址 |
| Content-MD5 | Base64加密格式的内容 MD5检验值 |
| Content-Range | 内容的位置范围 |
| Content-Type | 内容的媒体类型 |
| Expires | 内容的过期时间 |
| Last_modified | 内容的最后修改时间 |

2.6.3 HTTP方法

三****、HTTPS基础

HTTPS 还是通过了 HTTP 来传输信息,但是信息通过 TLS 协议进行了加密。

3.1 TLS

TLS 协议位于传输层之上,应用层之下。首次进行 TLS 协议传输需要两个 RTT ,接下来可以通过 Session Resumption 减少到一个 RTT。(RTT表示发送端发送数据到接收到对端数据所需的往返时间)

在 TLS 中使用了两种加密技术,分别为:对称加密和非对称加密。

对称加密:

对称加密就是两边拥有相同的秘钥,两边都知道如何将密文加密解密。

非对称加密:

有公钥私钥之分,公钥所有人都可以知道,可以将数据用公钥加密,但是将数据解密必须使用私钥解密,私钥只有分发公钥的一方才知道。

3.2 TLS 握手过程如下图:

(1)客户端发送一个随机值,需要的协议和加密方式

(2)服务端收到客户端的随机值,自己也产生一个随机值,并根据客户端需求的协议和加密方式来使用对应的方式,发送自己的证书(如果需要验证客户端证书需要说明)

(3)客户端收到服务端的证书并验证是否有效,验证通过会再生成一个随机值,通过服务端证书的公钥去加密这个随机值并发送给服务端,如果服务端需要验证客户端证书的话会附带证书

(4)服务端收到加密过的随机值并使用私钥解密获得第三个随机值,这时候两端都拥有了三个随机值,可以通过这三个随机值按照之前约定的加密方式生成密钥,接下来的通信就可以通过该密钥来加密解密

通过以上步骤可知,在 TLS 握手阶段,两端使用非对称加密的方式来通信,但是因为非对称加密损耗的性能比对称加密大,所以在 正式传输数据 时,两端使用 对称加密 的方式通信。

PS:以上说明的都是 TLS 1.2 协议的握手情况 ,在 1.3 协议中,首次建立连接只需要一个 RTT,后面恢复连接不需要 RTT 了。

四、GET和POST的区别

从技术上说:

1、get请求能缓存,post不能;

2、post相对于get来说,安全一点点,因为get请求都会包含在URL里,会被浏览器保存历史记录,post不会,但是在抓包的情况是一样的。

3、post可以request body来传递比get更多的数据,get米有这个技术。

4、url长度有限制,会影响get请求,长度限制是浏览器限制规定的,不是rfc(互联网通信协议)规定的。

5、post支持更多的 编码类型 且不对 数据类型 限制

③ 计网:运输层

本篇文章先概括介绍运输层协议的特点、进程之间的通信和端口等重要概念,然后讲述比较简单的UDP协议。然后讨论较为复杂但非常重要的TCP协议和可靠传输的工作原理,包括停止等待协议和ARQ协议。在详细讲述TCP报文段的首部格式之后,讨论TCP的三个重要问题:滑动窗口、流量控制和拥塞控制机制。最后,介绍TCP的连接管理。

从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。

当网络的边缘部分中的两台主机使用网络 的核心部分的功能进行端到端的通信时,只有主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。

运输层有一个很重要的功能 复用和分用:

从IP层来说,通信的两端是两台主机。但实际上,真正进行通信的实体是 在主机中的进程,是这台主机中的一个进程和另一台主机中的一个进程在交换数据(即通信)。运输层提供应用进程间的逻辑通信。“逻辑通信”的意思是:从应用层来看,只要把应用层报文交给下面的运输层, 运输层就可以把这报文传送到对方的运输层。但事实上这两个运输层之间并没有一条水平方向的物理连接。数据的传送是沿着图中的虚线方向(经过多个层次)传送的。

从这里可以看出网络层和运输层有明显的区别。网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。

运输层还要对收到的报文进行差错检测,而在网络层,IP数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分。

根据应用程序的不同需求,运输层需要有两种不同的运输协议,即面向连接的TCP和无连接的UDP,这两种协议就是本章要讨论的主要内容。

当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。但当运输层釆用无连接的UDP协议时,这种逻辑通信信道仍然是一条不可靠信道。

TCP/IP运输层的两个主要协议都是互联网的正式标准,即:

在TCP/IP体系中,则根据所使用的协议是TCP或 UDP,分别称之为TCP报文段或UDP用户数据报。

UDP在传送数据之前不需要先建立连接。远地主机的运输层在收到UDP报文后,不需要给出任何确认。虽然UDP不提供可靠交付,但在某些情况下UDP却是一种最有效的工作方式。

TCP则提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP不提供广播或多播服务。由于TCP要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销,占用许多处理机资源。

前面己经提到过运输层的复用和分用功能。应用层所有的应用进程都可以通过运输层再传送到IP层(网络层),这就是复用。运输层从IP层收到发送给各应用进程的数据后,必须分别交付指明的各应用进程,这就是分用。显然,给应用层的每个应用进程赋予一个非常明确的标志是至关重要的。

为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法(而这种方法必须与特定操作系统无关)对TCP/IP体系的应用进程进行标志。

解决这个问题的方法就是在运输层使用协议端口号,或通常简称为端口。这就是说,虽然通信的终点是应用进程,但只要把所传送的报文交到目的主机的某个合适的目的端口,剩下的工作(即最后交付目的进程)就由TCP或UDP来完成。

在协议栈层间的抽象的协议端口是软件端口,和路由器或交换机上的硬件端口是完全不同的概念。软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。

TCP/IP的运输层用一个16位端口号来标志一个端口。但请注意,端口号只具有本地意义,它只是为了标志本计算机应用层中的各个进程在和运输层交互时的层间接口。在互联网不同计算机中,相同的端口号是没有关联的。

两个计算机中的进程要互相通信,不仅必须知道对方的IP地址(为了找到对方的计算机),而且要知道对方的端口号(为了找到对方计算机中的应用进程)。

因此运输层的端口号分为下面的两大类:

用户数据报协议UDP只在IP的数据报服务之上增加了很少一点的功能,这就是复用和分用的功能以及差错检测的功能。

UDP的主要特点是:

用户数据报UDP有两个字段:数据字段和首部字段。首部字段很简单,只有8个字节。由四个字段组成,每个字段的长度都是两个字节。各字段意义如下:

当运输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交最后的终点——应用进程。

如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于该端口号的应用进程),就丢弃该报文,并由网际控制报文协议ICMP发送“端口不可达”差错报文给发送方。

UDP用户数据报首部中检验和的计算方法有些特殊。在计算检验和时,要在UDP用户 数据报之前增加12个字节的伪首部。所谓“伪首部”是因为这种伪首部并不是UDP用户数 据报真正的首部。只是在计算检验和时,临时添加在UDP用户数据报前面,得到一个临时的 UDP用户数据报。检验和就是按照这个临时的UDP用户数据报来计算的。伪首部既不向下传
送也不向上递交,而仅仅是为了计算检验和。

UDP计算检验和的方法和计算IP数据报首部检验和的方法相似。但不同的是:IP数据 报的检验和只检验IP数据报的首部,但UDP的检验和是把首部和数据部分一起都检验。

TCP是TCP/IP体系中非常复杂的一个协议,下面介绍TCP最主要的特点:

前面己经讲过,每一条TCP连接有两个端点,TCP连接的端点叫做套接字或插口。端口号拼接到IP地址即 构成了套接字。

因此,套接字的表示方法是在点分十进制的IP地址后面写上端口号,中间用冒号或逗号隔开,例如说:

每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定,例如:

这里IP1和IP2分别是两个端点主机的IP地址,而port1和port2分别是两个端点主机中的端口号。TCP连接的两个套接字就是socket1和socket2。

总之,TCP连接就是由协议软件所提供的一种抽象。

虽然有时为了方便,我们也可以说,在一个应用进程和另一个应用进程之间建立了一条TCP连接,但一定要记住:TCP连 接的端点是个很抽象的套接字,即(IP地址:端口号)。

我们知道,TCP发送的报文段是交给IP层传送的。但IP层只能提供尽最大努力服务,也就是说,TCP下面的网络所提供的是不可靠的传输。因此,TCP必须釆用适当的措施才能使得两个运输层之间的通信变得可靠。

“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。

停止等待协议有以下四种情况:

停止等待协议的优点是简单,但缺点是信道利用率太低。

信道利用率U可以用以下公式计算:

为了提高传输效率,发送方可以不使用低效率的停止等待协议,而是釆用流水线传输,这种传输方式可以获得很高的信道利用率。

滑动窗口协议比较复杂,是TCP协议的精髓所在。这里先给出连续ARQ协议最基本的概念,但不涉及许多细节问题。

发送方维持的发送窗口,它的意义是:位于发送窗口内的分组都可连续发送出去,而不需要等待对方的确认。这样,信道利用率就提高了。

连续ARQ协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。

如果原来己经发送了前5个分组,那么现在就可以发送窗口内的第6个分组了。

接收方一般都是釆用累积确认的方式。这就是说,接收方不必对收到的分组逐个发送 确认,而是在收到几个分组后,对按序到达的最后一个分组发送确认,这就表示:到这个分组为止的所有分组都已正确收到了。

累积确认有优点也有缺点。优点是:容易实现,即使确认丢失也不必重传。但缺点是不能向发送方反映出接收方己经正确收到的所有分组的信息。

如果发送方发送了前5个分组,而中间的第3个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。这就叫做Go-back-N(回退N)。

TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段。一个TCP报文段分为首部和数据两部分,而TCP的全部功能都体现在它首部中各字段的作用。

TCP报文段首部的前20个字节是固定的,后面有4n字节是根据需要而增加的选项。因此TCP首部的最小长度是20字节。

首部固定部分各字段的意义如下:

TCP的滑动窗口是以字节为单位的。

现假定A收到了 B发来的确认报文段,其中窗口是20字节,而确认号是31(这表明B期望收到的下一个序号是31,而序号30为止的数据已经收到了)。

A的发送窗口表示:在没有收到B的确认的情况下,A可以连续把窗口内的数据都发送出去。凡是已经发送过的数据,在未收到确认之前都必须暂时保留,以便在超时重传时使用。

发送窗口后沿的后面部分表示己发送且己收到了确认。发送窗口后沿的变化情况有两种可能,即不动(没有收到新的确认)和前移(收到了新的确认)。

发送窗口里面的序号表示允许发送的序号。窗口越大,发送方就可以在收到对方确认之前连续发送更多的数据,因而可能获得更高的传输效率。但A的发送窗口一定不能超过B的接收窗口数值。

发送窗口前沿的前面部分表示不允许发送的。发送窗口前沿通常是不断向前移动,但也有可能不动。这对应于两种情况:一是没有收到新的确认,对方通知的窗口大小也不变;二是收到了 新的确认但对方通知的窗口缩小了,使得发送窗口前沿正好不动。

现在假定A发送了序号为31〜41的数据。这时,发送窗口位置并未改变, 但发送窗口内靠后面有11个字节(灰色小方框表示)表示己发送但未收到确认。而发送窗口内靠前面的9个字节(42〜50)是允许发送但尚未发送的。

从以上所述可以看出,要描述一个发送窗口的状态需要三个指针:P1,P2和P3,小于P1的是已发送并已收到确认的部分,而大于P3的是不允许发送的部分:

再看一下B的接收窗口。B的接收窗口大小是20。在接收窗口外面,到30号为止的数据是已经发送过确认,并且已经交付主机了。因此在B可以不再保留这些数据。接收窗口内的序号(31〜50)是允许接收的。

此时B收到了序号为32和33的数据。这些数据没有按序到达,因为序号为31的数据没有收到(也许丢失了,也许滞留在网络中的某处)。请注意,B只能对按序收到的数据中的最高序号给出确认,因此B发送的确认报文段中的确认号仍然是31 (即期望收到的序号),而不能是32或33。

现在假定B收到了序号为31的数据,并把序号为31〜33的数据交付主机,然后B删除这些数据。接着把接收窗口向前移动3个序号,同时给A发送确认,其中窗口值仍为20,但确认号是34。这表明B已经收到了到序号33为止的数据。我们注意到,B还收到了序号为37, 38和40的数据,但这些都没有按序到达,只能先暂存在接收窗口中。

A在继续发送完序号42〜53的数据后,指针P2向前移动和P3重合。发送窗口内的序号都已用完,但还没有再收到确认(图5-18)。由于A的发送窗口己满,可用窗口已减小到零,因此必须停止发送。为了保证可靠传输,A只能认为B还没有收到这些数据。于是,A在经过一段时间后(由超时计时器控制)就重传这部分数据,重新设置超时计时器,直到收到B的确认为止。

CP的发送方在规定的时间内没有收到确认就要重传已发送的报文段。这种重传的概念是很简单的,但重传时间的选择却是TCP最复杂的问题之一。

如果把超时重传 时间设置得太短,就会引起很多报文段的不必要的重传,使网络负荷增大。但若把超时重传 时间设置得过长,则又使网络的空闲时间增大,降低了传输效率。

那么,运输层的超时计时器的超时重传时间究竟应设置为多大呢?

TCP釆用了一种自适应算法,它记录一个报文段发出的时间,以及收到相应的确认的 时间。这两个时间之差就是报文段的往返时间RTT。TCP保留了 RTT的一个加权平均往返时间RTT s

每当第一次测量到RTT样本时,RTTs值就取为所测量到的RTT样本 值。但以后每测量到一个新的RTT样本,就按下式重新计算一次RTT s

显然,超时计时器设置的超时重传时间RTO应略大于上面得 出的加权平均往返时间RTT s ,所以RTO应该这样计算。

而RTT D 是RTT的偏差的加权平均值,它与RTTs和新的RTT样本之差有关。

现在发送出一个报文段,设定的重传时间到了,还没有收到确认。于是重传报文段。经过了一段时间后,收到了确认报文段。现在的问题是:如何判定此确认报文段 是对先发送的报文段的确认,还是对后来重传的报文段的确认?

Kam算法进行修正。方法是:报文段每重传一次,就把超时重传时间RTO增大一些。典型的做法是取新的重传时间为旧的重传时间的2倍。当不再发生报文段的重传时,才根据上面给出的式子计算超时重传时间。

现在还有一个问题没有讨论。这就是若收到的报文段无差错,只是未按序号,中间还缺少一些序号的数据,那么能否设法只传送缺少的数据而不重传已经正确到达接收方的数据?答案是可以的。选择确认就是一种可行的处理方法。

举一个例子来说明选择确认的工作原理。TCP的接收方在接收对方发送过来的数据字节流的序号不连续,结果就形成了一些不连续的字节块。

可以看出,序号1〜1000收到了,但序号1001〜1500没有收到。接下来的字节流又收到了,可是又缺少了3001〜3500。再后面从序号4501起又没有收到。

也就是说,接收方收到了和前面的字节流不连续的两个字节块。如果这些字节的序号都在接收窗口之内,那么接收方就先收下这些数据,但要把这些信息准确地告诉发送方,使发送方不要再重复发送这些已收到的数据。

一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接 收方就可能来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。

利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。

设A向B发送数据。在连接建立时,B告诉了A:“我的接收窗口rwnd = 400”。因此,发送方的发送窗口不能超过接收方给出的接收窗口的数值。

我们应注意到,接收方的主机B进行了三次流量控制。第一次把窗口减小到rwnd = 300, 第二次又减到rwnd = 100,最后减到rwnd = 0,即不允许发送方再发送数据了。这种使发送方暂停发送的状态将持续到主机B重新发出一个新的窗口值为止。

TCP协议使得在发送方不发送很小的报文段的同时,接收方也不要 在缓存刚刚有了一点小的空间就急忙把这个很小的窗口大小信息通知给发送方。

在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫做拥塞,即对资源需求之和 > 可用资源。

网络拥塞往往是由许多因素引起的。简单地将处理机的速率提高或简单地扩大缓存的存储空间,可能会使上述情况缓解一些,但往往又会将瓶颈转移到其他地方。问题的实质往往是整个系统的各个部分不匹配。只有所有的部分都平衡了,问题才会得到解决。

拥塞控制与流量控制的关系密切,它们之间也存在着一些差别。拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。流量控制往往是指点对点通信量的控制,是个端到端的问题(接收端控制发送端)。

下图中横坐标是提供的负载,代表单位时间内输入给网络的分组数目。纵坐标是吞吐量,代表单位时间内从网络输出的分组数目。

实践证明,拥塞控制是很难设计的,因为它是一个动态的(而不是静态的)问题。

从大的方面看,可以分为 开环控制 闭环控制 两种方法:

TCP进行拥塞控制的算法有四种,即慢开始、拥塞避免、快重传和快恢复。

为了集中精力讨论拥塞控制,我们假定:

拥塞控制也叫做基于窗口的拥塞控制。为此,发送方维持一个叫做拥塞窗口cwnd的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。

发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就可以再增大一些,以便把更多的分组发送出去,这样就可以提高网络的利用率。但只要网络出现拥塞或有可能出现拥塞,就必须把拥塞窗口减小一些,以减少注入到网络中的分组数,以便缓解网络出现的拥塞。

发送方又是如何知道网络发生了拥塞呢?我们知道,当网络发生拥塞时,路由器就要丢弃分组。因此只要发送方没有按时收到应当到达的确认报文,也就是说,只要出现了超时,就可以猜想网络可能出现了拥塞。现在通信线路的传输质量一般都很好,因传输出差错而丢弃分组的概率是很小的(远小于1%)。因此,判断网络拥塞的依据就是出现了超时。

慢开始算法的思路是这样的:当主机开始发送数据时,由于并不清楚网络的负荷情况,所以如果立即把大量数据字节注入到网络,那么就有可能引起网络发生拥塞。因此我们由小到大逐渐增大拥塞窗口数值。

新的RFC5681把初始拥塞窗口cwnd设置为不超过2至4个SMSS(发送方的最大报文段)的数值。慢开始规定,在每收到一个对新的报文段的确认后,可以把拥塞窗口增加最多一个SMSS的数值。

下面用例子说明慢开始算法的原理。在一开始发送方先设置cwnd = 1,发送第一个报文段M1,接收方收到后确认M1。发送 方收到对M1的确认后,把cwnd从1增大到2,于是发送方接着发送M2和M3两个报文 段。接收方收到后发回对M2和M3的确认。发送方每收到一个对新报文段的确认(重传的不算在内)就使发送方的拥塞窗口加1,因此发送方在收到两个确认后,cwnd就从2增大到4,并可发送M4〜M7共4个报文段。

与慢开始算法相辅助的算法是拥塞避免算法。

拥塞避免算法的思路是让拥塞窗口 cwnd缓慢地增大,即每经过一个往返时间RTT就 把发送方的拥塞窗口cwnd加1,而不是像慢开始阶段那样加倍增长。在拥塞避免阶段,拥塞窗口 cwnd按线性规律缓慢增长,比慢开始算法的拥塞窗口增长速率缓慢得多。

为了防止拥塞窗口 cwnd增长过大引起网络拥塞,还需要设置一个慢开始门限ssthresh 状态变量。慢开始门限ssthresh的用法如下:

下面用图片说明慢开始算法和拥塞避免算法相互配合的原理。

其中ssthresh的初始值设置为16,开始时使用慢开始算法,成指数性增长,当到达ssthresh值时,TCP协议预测可能会出现拥塞,所以开始使用避免拥塞算法,成线性增长,当发生超时重传时,立即减小拥塞窗口,重复上述步骤。

但是,有时,个别报文段会在网络中丢失,但实际上网络并未发生拥塞。如果发送方迟迟收 不到确认,就会产生超时,就会误认为网络发生了拥塞。这就导致发送方错误地启动慢开 始,把拥塞窗口cwnd又设置为1,因而降低了传输效率。

釆用快重传算法可以解决上述问题。快重传算法可以让发送方尽早知道发生了个别报文段的丢失。快重传算法首先要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。

下面举一个例子来说明快重传算法的原理。接收方收到了M1和M2后都分别及时发出了确认。现假定接收方没有收到M3但却收到了 M4。本来接收方可以什么都不做。但按照快重传算法,接收方必须立即发送对M2的重复确认,以便让发送方及 早知道接收方没有收到报文段M3。发送方接着发送M5和M6。接收方收到后也仍要再次分别发出对M2的重复确认。这样,发送方共收到了接收方的4个对M2的确认,其中后3个都是重复确认。快重传算法规定,发送方只要一连收到3个重复确认,就知道接收方确实没 有收到报文段M3,因而应当立即进行重传(即“快重传”),这样就不会出现超时,发送方也不就会误认为出现了网络拥塞。

快恢复算法与快重传算法配合使用,当使用快重传算法发现是由于数据丢失而引起的超时(不是网络拥塞引起的),就使用快恢复算法,此时发送方调整门限值ssthresh=cwnd/2,同时设置拥塞窗口cwnd=ssthresh,并开始执行拥塞避免算法。

慢开始、拥塞避免、快重传和快恢复这四种算法相辅相成,构成了TCP的拥塞控制。

网络层的策略对TCP拥塞控制影响最大的就是路由器的分组丢弃策略。在最简单的情 况下,路由器的队列通常都是按照“先进先出”的规则处理到来的分组。

由于队列长度总是有限的,因此当队列已满时,以后再到达的所有分组(如果能够继续排队,这些分组都将排在队列的尾部)将都被丢弃。这就叫做尾部丢弃策略。

路由器的尾部丢弃往往会导致一连串分组的丢失,这就使发送方出现超时重传,使 TCP进入拥塞控制的慢开始状态,结果使TCP连接的发送方突然把数据的发送速率降低到 很小的数值。更为严重的是,在网络中通常有很多的TCP连接(它们有不同的源点和终 点),这些连接中的报文段通常是复用在网络层的IP数据报中传送。在这种情况下,若发生了路由器中的尾部丢弃,就可能会同时影响到很多条TCP连接,结果使这许多TCP连接在同一时间突然都进入到慢开始状态。这在TCP的术语中称为全局同步。

为了避免发生网络中的全局同步现象,可以使用主动队列管理AQM。

所谓“主动”就是不要等到路由器的队列长度已经达到最大值时才不得不丢弃后面到达的分组。这样就太被动了。应当在队列长度达到某个值得警惕的数值时 (即当网络拥塞有了某些拥塞征兆时),就主动丢弃到达的分组。这样就提醒了发送方放慢发送的速率,因而有可能使网络拥塞的程度减轻,甚至不出现网络拥塞。

TCP是面向连接的协议。运输连接是用来传送TCP报文的。TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。因此,运输连接就有三个阶段,即:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。

在TCP连接建立过程中要解决以下三个问题:

TCP连接的建立釆用客户服务器方式。主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫做服务器。

TCP建立连接的过程叫做握手,握手需要在客户和服务器之间交换三个TCP报文段。

下面举一个例子来说明TCP建立连接的过程。假定主机A运行的是TCP客户程序,而B运行TCP服务器程序。最初两端的TCP进程都处于CLOSED(关闭)状态。图中在主机下面的方框分别是TCP进程所处的状态。请注意,在本例中,A主动打开连接,而B被动打开连接。

一开始,B的TCP服务器进程先创建传输控制块TCB,准备接受客户进程的连接请求。然后服务器进

④ 什么是RTT计算机网络里的东西

RTT(Round-Trip Time):往返时延。是指数据从网络一端传到另一端所需的时间。通常,时延由发送时延、传播时延、排队时延、处理时延四个部分组成。

(1)发送时延

发送时延是结点将数据分组发送到传输媒介所需要的时间,也就是从分组的第一个比特开始发送算起,到最后一个比特发送完毕所需要的时间。显然,发送时延与网络接口/信道的传输速率成反比,与数据分组的长度成正比。

(2)传播时延

传播时延是电磁波在信道中传播一定距离所需要花费的时间,传播时延和信道的传输速率无关,
而是取决于传输媒介的长度,以及某种物理形式的信号在传输媒介中的传播速度。

如电磁波在自由空间的传播速度是光速,即3×105km/s。电磁波在网络传输媒体中的传播速度比在自由空间中的传播速度要略低一些,在铜线中的传播速度约为2.3×105km/s
,在光纤中的传播速度约为2.0×105km/s 。

(3)排队时延

排队时延是分组在所经过的网络结点的缓存队列中排队所经历的时延,排队时延的长短主要取决于网络中当时的通信量,当网络的通信流量大时,排队时雀毕间就长,极端情况下,当网络发生拥塞导致分组丢失时,该结点的排队时延视为无穷大。

此外,在有优先级算法的网络中,排队时延还取决于数据的优先级和结点的队列调度算法。

(4)处理时延

处理时延是分组在中间结点的存储转发过程中而进行的一些必要的处理所花费的时间,这些处理包括提取分组的首部,进行差错校验,为分组寻址和选路等。

(4)计算机网络应用层rtt扩展阅读

网络源销端到端的时延是几种时延的总合,其计算公式是:

总时延=传播时延+发送时延+排队时延+处理时延

根据网络的不同情况,有时有些时延可以忽略不计,如在局域网中,传播时延很小可以忽略不计;当网络没有拥塞时,分组在各个结点的排队时延可以忽略不计。

往返时延(Round-Trip Time,RTT)也是一个重要的性能指标,它表示从发送方发送数据开始,到发送方收到来自接收方的确认,总共经历的时延。对于复雹岁游杂的网络,往返时延要包括各中间结点的处理时延和转发数据时的发送时延。

⑤ 计算机网络的应用层协议主要有哪些

应用层协议包含以下内容:

1、DNS:域名系统DNS是因特网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。

2、FTP:文件传输协议FTP是因特网上使用得最广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件类型与格式镇桥,并允许文件具有存取权限。FTP其于TCP。

3、telnet远程终端协议御乱猛:telnet是一个简单的远程终端协议,它也是因特网的正式标准。又称为终端仿真协议。

4、HTTP:超文本传送协议,是面向事务的应用层协议,它是万维网上能够可靠地交换文件的重要基础。http使用面向连接的TCP作为运输层协议,保证了数据的可靠传输。

5、电子邮件协议SMTP:即简单邮件传送协议。SMTP规定了在两个相互通信的SMTP进程之间应如何交换信息。SMTP通信的三个陪旁阶段:建立连接、邮件传送、连接释放。

6、POP3:邮件读取协议,POP3(Post Office Protocol 3)协议通常被用来接收电子邮件。

7、远程登录协议(Telnet):用于实现远程登录功能。

8、SNMP:简单网络管理协议。由三部分组成:SNMP本身、管理信息结构SMI和管理信息MIB。SNMP定义了管理站和代理之间所交换的分组格式。SMI定义了命名对象类型的通用规则,以及把对象和对象的值进行编码。MIB在被管理的实体中创建了命名对象,并规定类型。

⑥ 网络中的RTT是什么意思

RTT(Round-Trip Time): 往返时延。在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。 RTT(Radio Transmission Technology): 无线传输技术。参考CDMA2000词条中的CDMA2000 1xRTT。 RTT(Radiation Tracking Transcer): 红外线跟踪系统, 辐射跟踪换能器。 RTT(Radio Teletype (-writer)): 无线电电传打字电报机。 RTT(Radioteletype Transmitter): 无线电电传打字电报发射机。 RTT(Real-Time Tactics):即时战术游戏又称“实时战术”游戏。它与即时战略(RTS:Real-Time Strategy)相类似,但缺少必要的战略要素,如资源采集、建造、发展等。一种常见的误解是认为“只要是即时进行的战争游戏就是即时战略游戏”。其实即时战略游戏的定义是很严格的,即时战略的“战略(Strategy)”的谋定过程必须是即时的,如果只有战斗是即时的,而采集、建造、发展等战略元素却以回合制进行,则该游戏不能归为即时战略游戏。如果该游戏完全没有上述战略元素,则只能归为即时战术(RTT:Real-Time Tactics)游戏。

⑦ [计算机网络之六] 传输层

  传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最底层。

  从传输层的角度,通信的真正端点并不是主机而是主机中的进程。

  传输层有 分用 复用 的功能。 “复用” 是指在发送方不同的应用进程都可以使用同一个运输层协议传送数据, “分用” 是指接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程。

  网络层和运输层有明显的区别,网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。

知名端口号 :0~1023
登记端口号 :1024~49151
客户端短暂端口号 :49152~65535


① 无连接。 发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。
② 尽最大努力交付。 即不保证可靠交付,因此主机不需要维持复杂的连接状态表。
③ 面向报文的。 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界,UDP 一次交付一个完整的报文。

  用户数据报 UDP 有两个字段:数据字段和首部字段。首部字段很简单,只有 8 个字节,由四个字段组成,每个字段的长度都是两个字节。各字段意义如下:

① 源端口 在需要对方回信时选用。不需要时可用全0。
② 目的端口 目的端口号。这在终点交付报文时必须使用。
③ 长度 用户数据报的长度,最小值为 8 (仅有首部)。
④ 检验和 检测用户数据报在传输中是否有错。有错就丢弃。

  用户数据报首部检验和的计算和校验都要计算出一个伪首部。


① 面向连接。

  应用程序在使用 TCP 协议之前,必须先建立 TCP 连接;传送数据完毕后,必须释放已经建立的 TCP 连接。类似于打电话:通话前要先拨号建立连接,通话结束后要挂机释放连接。

② 一对一。

  TCP 连接只能是点对点的(一对一)。

③ 可靠交付。

  通过 TCP 连接传送的数据,无差错、不丢失、不重复,并且按序到达。

④ 全双工通信。

  通信双方的应用进程在任何时候都能发送和接收数据,TCP 连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。

⑤ 面向字节流。

  TCP 中的 “流” 指的是流入到进程或从进程流出的字节序列。

  “面向字节流” 的含义:虽然应用程序和 TCP 的交互式一次一个数据块(大小不等),但 TCP 把应用程序交下来的数据仅仅看成是一连串无结构的字节流。TCP 并不知道所传送的字节流的含义。TCP 不保证接收方应用程序锁收到的数据块和发送方应用程序所发出的数据块具有对应的大小关系。但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样,当然接收方的应用程序必须有能力识别收到的字节流,把它还原成有意义的应用层数据。

  TCP 连接是协议软件提供的一种抽象,每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定,即:

  TCP 连接 ::= {socket1, socket2} = {(IP1: port1), (IP2: port2)}

  IP1 和 IP2 分别是两个端点主机的 IP 地址,port1 和 port2 分别是两端端点主机中的端口号。


  网络只能提供最大努力的服务,是不可靠的,因此 TCP 必须采用适当的措施才能使得两个运输层之间的通信变得可靠。当出现差错时让发送方重传出现差错的数据,同时在接收方来不及处理收到的数据时,及时告知发送方适当降低发送数据的速度,这样就可以在不可靠的传输信道实现可靠传输。

  ARQ(Auto Repeat-reQuest):自动重传请求。

  发送方每发送完一个分组就停止发送,等待接收方确认,在收到确认后再发送下一个分组。
  A 是发送方,B 是接收方。

  A 每发送一个分组后,等待 B 对该分组的确认后,再接着发送下一个分组。

【发送方】A 发送的分组在传输过程中出错,可能是丢失了,也可能是分组受到干扰出错了
【接收方】这时 B 直接丢弃分组,什么也不做(也不通知 A 受到的分组有差错)。

【解决方案】发送方在每发送完一个分组时设置一个 超时计数器 ,只要超过一段时间仍然没有接收到确认,就认为刚才发送的分组丢失了,因而重传前面发送过的分组,这叫 超时重传 。反之在超时计时器到期之前收到了相应的确认,就撤销该超时计时器。

第一,A 在发送完一个分组后, 必须暂时保留已发送的分组的副本 (在发生超时重传时使用)。只有在收到相应的确认后才能清楚暂时保留的分组副本。

第二,分组和确认分组都必须进行 编号 。这样才能明确是哪一个发送出去的分组受到了确认,而哪一个分组还没有收到确认。

第三,超时计时器设置的 重传时间应当比数据在分组传输的平均往返时间更长一些

【发送方】超时重传时间内没有收到确认报文,无法确认是发送出错、丢失,还是接收方的确认丢失,超时计时器到期后就要重传。
【接收方】丢弃收到的重复分组,不向上层交付;向发送方发送确认。

【发送方】收下迟到的确认,并且丢弃

  发送方大部分时间都在等待确认,信道的利用率低

  使用流水线的 ARQ 可以提高信道利用率

【发送方】维持一个发送窗口,位于发送窗口内的分组都可连续发送出去,而不需要等待对方的确认。

回退N帧协议 :如果发送方发送了多个分组,但中间的某个分组丢失了,这时接收方只能对丢失分组之前的分组发出确认,而发送方无法知道丢失分组及后面分组的接收情况,只好把丢失分组及后面的分组重传一次,这叫 Go-back-N ,表示需要再退回来重传已发送过的 N 个分组。


  前面 20 个字节固定,因此 TCP 首部最小长度是 20 字节。

  TCP 的滑动窗口以字节为单位,窗口后沿的部分表示已发送且已收到通知,窗口里的序号表示允许发送的序号,窗口前沿之前的数据暂时不允许发送,需要等待收到接收方的确认后前沿往前移才可发送。

描述一个发送窗口需要三个指针:P1、P2 和 P3,如图所示:

  小于 P1 的是已发送并已收到确认的部分,而大于 P3 的是不允许发送的部分。

  P3 - P1 = A 的发送窗口

  P2 - P1 = 已发送但尚未收到确认的字节数

  P3 - P2 = 允许发送但当前尚未发送的字节数(又称为 可用窗口 有效窗口

  接收方 B 接收窗口大小为20,因为未收到 31 的数据,即使已收到后面的序号 32、33 的数据,返回的确认号仍然是 31。

  现在接收方收到了 31、32、33,并返回确认号 33,接收窗口往前滑动 3 个序号,发送方接收到确认,发送窗口也向前滑动 3 个序号大小,现在 A 可以发送序号 51~53 的数据了。

  当发送方将发送窗口内的数据都发送出去,但是接收方的确认可能由于网络拥塞滞留,这时发送方发送窗口已满,可用窗口为 0,只能等待接收方的确认报文到达。

  TCP 为了保证可靠传输,要求必须受到对已发送报文的确认,如果超过一定时间未受到确认报文,则重传已发送的报文。这个时间就叫 超时重传时间 ,很明显超时重传时间的大小设置应该更贴近网络的实际情况,如果网络状况好,就设短一点,否则使网络的空闲时间增大,降低了传输效率;网络差就设长一点,否则会引起很多不必要的重传,使网络负荷增大。

  TCP 采用了一种自适应的算法:

  RTT(报文段的往返时间)、RTTs(加权平均往返时间),RTTs 的计算公式:

RTTd(RTT 的偏差的加权平均值)、RTO(RetransmissionTime-Out 超时重传时间):

【场景】TCP 的接收方在接收对方发送过来的数据字节流的序号不连续,形成一些不连续的字节块,如果简单按照回退N帧协议处理,意味着要重传第一个未收到的序号数据块及之后的数据,如果能通知发送方已收到了哪些数据(选择确认),就可以让发送方只发送接收方未收到的数据。



  流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。

  当发送方收到接收方通知,将窗口缩小为 0 时,发送方将暂时不能发送数据了,必须等接收方通知更新接收窗口大小,但是这个通知又有可能丢失,导致发送方没收到通知。

  为了避免双方互相等待死锁,TCP 为每个链接设有一个 持续计时器 ,只要 TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口 探测报文段 (仅携带 1 字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。如果窗口仍然是零,那么受到这个报文段的一方就重新设置持续计时器;如果窗口不是零,那么死锁的僵局就可以打破了。



【优点】提高网络利用率
【缺点】可能会发生某种程度的延迟

【场景】接收数据的主机如果每次都立刻回复确认应答的话,可能会返回一个较小的窗口,因为接收方刚接收完数,缓冲区已满。

【糊涂窗口综合征问题】
TCP 接收方缓存已满,而交互式的应用进程一次只从接收缓存中读取 1 个字节(这样就使接收缓存空间仅腾出 1 个字节),然后向发送方发送确认,并把窗口设置为 1 个字节(但发送的数据报是 40 字节长,TCP 首部 + IP 数据报首部)。接着,发送方又发来 1 个字节的数据(注意发送方发送的 IP 数据报是 41 字节长)。接收方发回确认,仍然将窗口设置为 1 个字节。这样进行下去,使网络的效率很低。

  TCP 文件传输中,就采用了两个数据段返回一次确认应答,并且等待一定时间后没有其他数据包到达时也依然发送确认应答。

  当对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,这种情况就叫做 拥塞



  慢开始(slow-start)、拥塞避免(congestion avoidance)、快重传(fast retransmit)和快恢复(fast recovery)。

【算法思路】

  当主机开始发送数据时,由于并不清楚网络的负荷情况,所以如果立即把大量数据字节注入网络,那么就有可能引起网络发生拥塞。较好的方法是先探测一下,即 由小到大逐渐增大发送窗口 ,也就是说, 由小到大逐渐增大拥塞窗口数值

【处理过程】

   慢开始门限值 ssthresh 决定了拥塞窗口达到多大时要执行什么算法。

① 当 cwnd < ssthresh 时,使用慢开始算法;
② 当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法;
③ 当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法。

  在拥塞窗口 cwnd 达到门限值之前,发送方每一轮次收到确认应答后,cwnd 就增大为原来的两倍;达到门限值后,执行拥塞避免算法。

PS. 慢开始只是表示初始发送数据少,不代表发送速率增长速度慢,实际上是指数级增长非常快。

【算法思路】

  让拥塞窗口 cwnd 缓慢地增大,即每经过一个往返时间 RTT 就把发送方的拥塞窗口 cwnd 加 1,而不是像慢开始阶段那样加倍增长。拥塞避免阶段有 “加法增大” 的特点,按线性规律缓慢增长,使网络比较不容易出现拥塞

【处理过程】

  在执行拥塞避免算法阶段,当网络出现超时时,发送方判断为网络拥塞,调整门限值为当前拥塞窗口的一半,即 ssthresh = cwnd / 2,同时拥塞窗口重置为 1,即 cwnd = 1,进入慢开始阶段。

【算法原理】

① 快重传

【场景】有时,个别报文段会在网络中丢失,但实际上网络并未发生拥塞。如果发送方迟迟收不到确认,就会产生超时,就会误认为网络发生了拥塞,导致发送方错误地启动慢开始,把拥塞窗口 cwnd 又设置为 1,因而降低了传输效率。

【方案】接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认,当发送方 一连收到 3 个重复确认 ,就知道接收方确实没有收到某个报文段,因而应当 立即进行重传

② 快恢复:

  发送方知道只是丢失了个别的报文段,于是不启动慢开始,而是执行快恢复算法,调整发送方门限值 ssthresh = cwnd / 2,同时设置拥塞窗口 cwnd = ssthresh = 8,并开始执行拥塞避免算法。


拥塞控制的流程如下:

  拥塞窗口 cwnd,接收方窗口 rwnd, 发送方发送窗口的上限值 = Min[rwnd, cwnd]

① 当 rwnd < cwnd,接收方的接收能力限制发送方窗口大小;
② 当 cwnd < rwnd,网络的拥塞程度限制发送方窗口大小。


【问题背景】

  路由器采取分组丢弃策略,即按照 先进先出(FIFO) 规则处理分组,当队列已满时,则丢弃后面到达的分组,这叫 尾部丢弃策略

  丢失的分组会导致发送方出现超时重传,发送方转而执行慢开始算法,不同分组属于不同 TCP 连接,导致很多 TCP 同时进入慢开始状态,这种现象称为 全局同步

【解决方案】

  主动队列管理 AQM:不等到路由器的队列长度已经达到最大值时才不得不丢弃后面到达的分组,而是在队列长度达到某个警惕值时就主动丢弃到达的分组,这样就提醒了发送方放慢发送的速率,因而有可能使网络拥塞的程度减轻,甚至不出现网络拥塞。


  TCP 是面向连接的协议,运输连接有三个阶段: 连接建立、数据传送、连接释放

  TCP 连接建立过程要解决的几个问题:

① 使每一方能够确知对方的存在;
② 允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等);
③ 能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。

  TCP 建立连接的过程叫做握手,握手需要在客户和服务器之间交换三个 TCP 报文段,即 三次握手

  最初客户端和服务端都处于 CLOSED(关闭) 状态,A(Client)主动打开连接,B(Server)被动打开连接。

  一开始,B 的 TCP 服务器进程先创建 传输控制块 TCB ,准备接受客户进程的连接请求。然后服务器进程就处于 LISTEN(收听)状态,等待客户端的连接请求。如有,即作出响应。

   第一次握手 :A 的 TCP 客户进程也是首先创建传输控制块 TCB,准备接受客户进程的连接请求。然后在打算建立 TCP 连接时,向 B 发出连接请求报文段,这时首部中的同步位 SYN = 1,同时选择一个初始序号 seq = x。TCP 规定,SYN 报文段(即 SYN = 1 的报文段)不能携带数据,但要 消耗掉一个序号 。这时,TCP 客户进程进入 SYN-SENT(同步已发送) 状态。

   第二次握手 :B 收到连接请求报文段后,如同意建立连接,则向 A 发送确认。在确认报文段中应把 SYN 位和 ACK 位都置 1,确认号是 ack = x + 1,同时也为自己选择一个初始序号 seq = y。请注意,这个报文段也不能携带数据,但同样 要消耗掉一个序号 。这时 TCP 服务器进程进入 SYN-RCVD(同步收到) 状态。

   第三次握手 :TCP 客户进程收到 B 的确认后,还要向 B 给出确认。确认报文段的 ACK 置 1,确认号 ack = y + 1,而自己的序号 seq = x + 1。TCP 的标准规定,ACK 报文段可以携带数据。但 如果不携带数据则不消耗序号 ,在这种情况下,下一个数据报文段的序号仍是 seq = x + 1。这时,TCP 连接已经建立,A 进入 ESTABLISHED(已建立连接) 状态。当 B 收到 A 的确认后,也进入 ESTABLISHED(已建立连接)状态。








  数据传输结束后,通信的方法都可释放连接。现在 A 和 B 都处于 ESTABLISHED 状态。

   第一次挥手 :A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接。A 把连接释放报文段首部的终止控制位 FIN 置 1,其序号 seq = u,它等于前面已传送过的数据的最后一个字节的序号加 1。这时 A 进入 FIN-WAIT-1(终止等待 1)状态,等待 B 的确认。请注意,TCP 规定,FIN 报文段即使不携带数据,它也消耗掉一个序号。

   第二次挥手 :B 收到连接释放报文后即发出确认,确认号是 ack = u + 1,而这个报文段自己的序号是 v,等于 B 前面已传送过的最后一个字节的序号加 1。然后 B 就进入 CLOSE-WAIT(关闭等待)状态。TCP 服务器进程这时应通知高层应用程序,因而从 A 到 B 这个方向的连接就释放了,这时的 TCP 连接处于半关闭(half-close)状态,即 A 已经没有数据要发送了,但 B 若发送数,A 仍要接收。也就是说,从 B 到 A 这个方向的连接并未关闭,这个状态可能会持续一段时间。A 收到来自 B 的确认后,就进入 FIN-WAIT-2(终止等待 2)状态,等待 B 发出的连接释放报文段。

   第三次挥手 :若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接。这时 B 发出的连接释放报文段必须使 FIN = 1。现假定 B 的序号为 w(在半关闭状态 B 可能又发送了一些数据)。B 还必须重复上次已发送过的确认号 ack = u + 1。这时 B 就进入 LAST-ACK(最后确认)状态,等待 A 的确认。

   第四次挥手 :A 在收到 B 的连接释放报文段后,必须对此发出确认。在确认报文段中把 ACK 置 1,确认号 ack = w + 1,而自己的序号是 seq = u + 1(根据 TCP 标准,前面发送过的 FIN 报文段要消耗一个序号)。然后进入 TIME-WAIT(时间等待)状态。请注意,现在 TCP 连接还没有释放掉。必须经过时间等待计时器(TIME-WAIT timer)设置的时间 2MSL 后,A 才进入到 CLOSED 状态,然后撤销传输控制块,结束这次 TCP 连接。当然如果 B 一收到 A 的确认就进入 CLOSED 状态,然后撤销传输控制块。所以在释放连接时,B 结束 TCP 连接的时间要早于 A。




⑧ 计算机网络——应用层-Web&HTTP

计算机网络系列博文——目录

20世纪90年代初
因特网应用

Web应用的组成

由对象组成。对象是一个文件,如HTML文件,JPEG图像,Java程序,视频片段等。
对象可通过一个URL地址寻址。
Web页面常由一个HTML基本文件和多个引用对象构成。

URL(Uniform Resoure Locator):统一资源定位器 RFC1738

用以寻址Web对象
由一个存放对象的服务器主机名和对象路径名构成。

HTTP 由客户端程序和服务端程序实现,二者通过交换HTTP报文会话。
HTTP规范定义了HTTP客户端和服务端之间的通信协议。

Web浏览器实现HTTP客户端,请求、接收、展示Web对象
Web服务器实现HTTP服务端,响应客户的请求,发送对象

HTTP使用TCP作为支撑运输层协议。

端口:80

无状态协议 服务器不保存关于客户的任何信息
服务器向客户发送被请求的文件,而不存储任何关于客户的状态信息。

往返时间(Round-Trip Time,RTT)
一个短分组从客户到服务器然后再返回客户所花费的时间。

某客户和服务器的一次会话中,每个请求/响应对通过一个单独的TCP连接传输

HTTP 1.0版本使用非持续性连接

对多个待获得的web对象,客户端一次只请求一个对象,待前一个对象接收完毕后再发送对下一个对象的请求。

时间分析

浏览器通常支持并行的TCP连接。并行TCP连接数通常为5~10个。
对多个待获得的web对象,客户端一次可同时建立多个TCP连接,以同时请求多个web对象。
时间分析

某客户和服务器的一次会话中,所有请求/响应对经同一TCP连接传输

HTTP 1.1版本在默认方式下采用持续连接,但也可由客户端/服务器配置为非持续连接。

客户端只有收到前一个响应后才发送新的请求
可理解为同个TCP内的串行

时间分析

客户端只要遇到一个引用对象就尽快发出请求
可理解为同个TCP内的并行
HTTP 1.1的默认选项

时间分析

TCP 三次握手
1.客户向服务器发送一个小TCP报文段;
2.服务器用一个小TCP报文段做出确认和响应;
3.客户向服务器返回确认和一个HTTP请求报文;
4.服务器返回相应HTML文件;

HTTP规范
RFC 1945 , RFC 2616

用ASCII文本书写
HTTP协议有两类消息,请求消息(request)和响应消息(response)

请求行 HTTP请求报文的第一行

方法

首部行 请求行后继的其它行,包含一些会话信息

空行 回车换行,分隔首部行和实体体

实体体(entity body)
GET方法下实体体为空
POST方法下实体体包含表单信息

状态行

常见状态码

首部行

空行

实体体
包含了所请求的对象

HTTP是无状态协议,但cookie技术允许服务器识别用户
cookie在无状态的HTTP之上建立一个用户会话层

参见 [RFC 6265]

cookie组件

cookie技术的争议在于它可能泄露用户的隐私

代表原Web服务器来响应HTTP请求的网络实体

Web缓冲器通常由ISP购买并安装

允许缓存器证实其缓存的副本是新的。
如果缓存器有web对象最新的版本,则初始服务器不需要向缓存器发送该web对象

在HTTP请求消息中声明所持有版本的日期
If-modified-since: <date>

如果缓存的版本是最新的,则响应消息中不包含对象
HTTP/1.0 304 Not Modified

内容分发网络(Content Distribution Network,CDN)
基于缓存器技术,CDN公司在因特网上安装许多地理上分散的缓存器,使得大流量本地化。
有共享CDN(Akamai,Limelight),专用CDN(谷歌,微软)

⑨ RTT全称源自哪

。普通的图形渲染流程中,最终结果是渲染到帧缓存中,最后显示到屏幕上,然后可以把纹理继续应用到场景绘制中,比如渲染一个场景A到纹理中,在另一个场景B的一个电视屏幕上把刚才的纹理贴上去,就像是在播放A一样,再比如各种镜子中的景象也是一样道理,阴影图(shadow mapping)

⑩ 计算机网络体系分为哪四层

1.、应用层

应用层对应于OSI参考模型的高层,为用户提供所需要的各种服务,例如:FTP、Telnet、DNS、SMTP等.

2.、传输层

传输层对应于OSI参考模型的传输层,为应用灶拍游层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP).

TCP协议提供的是一种可靠的、通过“三次握手”来连接的数据传输服务;而UDP协议提供的则是不保证可靠的(并不是不可靠)、无连接的数据传输服务.

3.、网际互联层

网际互联层对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。注重重新赋予主机一个IP地址来完成对主机的寻址,它还负责数据包在多种网络中的路由。

该层有三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文贺哗协议(ICMP)。

IP协议是网际互联层最重要的协议,它提供的是一个可靠、无连接的数据报传递服务。

4.、网络接入层(即主机-网络层)

网络接入层与OSI参考模型中的物理层和数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。地址解析协议(ARP)工作在此层,即OSI参考模型的数据链路层。

(10)计算机网络应用层rtt扩展阅读:

OSI将计算机网络体系结构(architecture)划分为以下七层:

物理层: 将数据转换为可通过物理介质传送的电子信号相当于邮局中的搬运工人。

数据链路层: 决定访问网络介质的方式。

在此层将数据分帧,并处理流控制。本层指定拓扑结构并提供硬件寻址,相当于邮局中的装拆箱工人。

网络层: 使用权数据路由经过大型网络 相当于邮局中的排序工人。

传输层: 提供终端到终端的可靠连接 相当于公司中跑邮局的送信职员。

会话层: 允许用户使用简单易记的名称建立连接 相当于公司中收寄信、写信封与拆信封的秘书。

表示层: 协商数据交换格式 相当公司中简报老板、替老板写信的助理。

应用层: 用户的应用程序和网络之间的接口老板。