引言

人们在讨论因特网时,经常提到协议和标准。网络是一组互相链接的通信设备,比如打印机。

  • 互联网(internet)是指两个或多个彼此通信的网络
  • 因特网(Internet)是成千上万互联的网络所组成,这个非凡的系统在1969年问世。
  • ARPANET:每个主机可以链接到称为接口报文处理机(IMP)的特殊主机上,这些IMP则可以一次互相链接。

1972年,ARPANET核心组成员研究一个项目“网络互连项目”他们希望把不同网络链接起来,使得一个网络上的
主机可以和另一个不同网络上的主机通信。要解决,不同分组长度,不同接口,不同传输速率,等。后来发明了一个概念
就是使用称为 <网关>的设备作为中间硬件,以便把分组从一个网络传送到另一个网络。

网络核心部分

线路交换,实施了一堆终端的通信,沿其路径所需的资源(缓冲区股,链路带宽等)整个会话期间必须预留。网络电话就是一个线路交换网络的例子: 某人打电话通过电话网络给另一个人发消息之前,必须建立一个发送方与接收方之间的连接。

分组交换(本文重点),不许驻留,一次会话的各个消息按所需使用的资源,其结果是可能不得不等待(排队)以访问某个通信链路。 因特网就是典型的分组交换网络。分组经由一系列通信链路传输,分组交换网络没有为该分组预留任何带宽。其中一个链路因为同时与其他分组需要传送变得拥塞,那么该分组不得不等待在该链路入口点的某个缓冲区,从而遭受一定的延迟。

分组交换网络中的延迟和丢失:

  • 节点处理延迟: 路由器检查分组的头部,以确定把它导向哪个链路所需的时间属于节点处理延迟,还可能包含其他因素
  • 排队延迟: 分组所在队列中经历一段排队延迟,这是它等待被发送到出链路的时间。
  • 发送延迟: 把分组移除自身所需的时间
  • 传播延迟: 分组从一个路由器发出到另一个路由器的入口,属于传播延迟,主要由传输距离和传播物理媒介决定
  • 总延迟: 节点处理延迟 + 排队延迟 + 发送延迟 + 传播延迟

分组丢失,分组在链路路口输出队列能容纳的数目是优先的,取决于路由器的缓冲区大小,一个分组到达队列时,可能发现该队列已满,没有存储这些分组的地方,路由器就会丢弃分组。

协议

在设备之间进行通信需要遵守一些协议,协议是用来管理通信的一组规定,协议的三个关键要素是: 语法语义时序

  • 语法: 语法就是数据的结构或格式,例如简单的协议规定数据前8位是发送器地址,第二个8位是接收器地址
  • 语义: 指每一段比特流分别表示什么意思,一个特定的位模式应该怎么样理解,基于这样的解释又该采取什么行动。
  • 时序: 时序涉及两个方面。数据因当在何时发送出去以及数据能够发送多块的速度。

例如: 如果发送数据的速率是每秒100兆比特(Mbps),但接收端只能以1Mbps的速率处理数据,那么这样的传输会导致数据大量丢失。

OSI模型

“两个通信设备”之间要进行通信就需要有一个协议,而当该通信比较复杂时,就有必要分为多层, 每一层都有各自的协议。
OSI是一个开放性的通信系统互连参考模型,它是一个定义得非常好的协议规范,目的就是为了设计出能让各种类型计算机系统互相通信的网络系统,它由7个独立且相关的层组成,每一层都是在下一层的基础上,通过层间接口向上一层提供一定的服务,把”这种服务是如何实现的”细节加以屏蔽。数据和网络信息之所以能够在发送设备中逐层乡下传递,同时又在接收设备中逐层向上交付,是因为没对相邻的层之间都有一个接口(interface),定义了它的上层提供什么信息和服务。

  1. 物理层
  2. 数据链路层
  3. 网络层
  4. 传输层
  5. 会话层
  6. 表示层
  7. 应用层

这些层可以看成三个组:

  • 物理层,数据链路层,网络层: 是网络支撑层,这些层的任务是在物理上把数据从一个设备传送到另一个设备
  • 会话层,表示层,应用层: 用户支撑层,这些层使一些本来没有关系的软件和系统之间有了互相操作性
  • 运输层: 将上面2个部分连接起来,使底层发送高层可使用的形式,OSI高层几乎都是用软件来实现的,而底层则是硬件和软件的结合

各个层之间通信:

  • 对等层之间的通信: 是指不同系统中相同层次之间的通信,OSI标准为每一层都定义了协议数据单元PDU的格式。
  • 相邻层之间的通信: 属于局部问题,保证对等层实体之间的通信得以实施。

物理层

两台计算机之间要通信,必然需要传输介质/物理媒介来连接两台计算机。通信单位: 比特

  • 导向型传输介质:
    • 双绞线: 适用于近距离
    • 同轴电缆:适用于远距离,抗干扰性强
    • 光纤: 带宽远远大于上面两种
  • 非导向型传输介质:
    • 无线电波
    • 微波
    • 红外线,激光

物理层的作用就是实现计算机之间的传输,这个数据其实是比特流,物理层需要尽可能屏蔽掉具体传输介质和物理设备的差异,实现比特流的透明传输。

物理层协调通过物理媒介传输比特流时所需的各种功能。涉及到接口和传输媒介的机械和电器该规约。还定义了这些物理设备以及接口为了实现传输必须完成的过程和功能。

以太网

以太网是施乐公司研究中心与1976年创建的,自那以后已经发展了4代。标准以太网(10Mbps), 快速以太网(100Mbps),丘比特以太网(1Gbps)和10G以太网(10Gbps)。

1Mbps代表每秒传输 1,000,000位(1M=1024K),即每秒传输 1,000,000/8=125,000bit字节 = 122kb = 0.119MB ADSL的实际上行带宽和下行带宽是由家庭调制解调器与ISP调制调节器之间的距离,双绞线规格,电气干扰共同确定。

铜质双绞线: 最便宜最常见的传输介质。双绞线由2根绝缘的铜芯线构成,每根约1毫米粗,彼此以某种规则的螺旋模式交缠在一起,为了削减来自紧挨着的其他股双绞线的电气干扰,一般外层包一层防护屏蔽。数股双绞线捆扎在一起构成一段电缆,每股双绞线构成单个通信链路。

同轴电缆:也由2根铜导体构成,不过这2根铜导体是以内一外沿同一轴心伸展的,而不是交缠在一起,这样的结构加上特殊的绝缘材料和屏蔽层,达到比双绞线更高的位传输。其中又分为: 基带同轴电缆和宽带同轴电缆。

标准以太网

10Mbps早已称为历史。接入方式: CSMA/CD。
IEEE 802.3 标准定义了 带碰撞检测的载波侦听多点接入 作为传统以太网接入方法,
在传统以太网中,个各站在物理上通过总线拓扑连接在一起也就是说,所有共享媒体,并且一次只能由一个站使用这个媒体。
如果 2 个站同时使用媒体,他们发送的帧就会发生碰撞

IEEE 802.11

无线局域网规约,定义了2类服务: 基本服务集(BBS)扩展服务集(ESS)
基本服务集由固定或移动的无线站以及可选的中央基站构成,中央基站称为接入点(AP),没有接入点的BSS是一个孤立的网络,不能向其他BSS发送数据。

点到点局域网

56k调制调节器
上传时,模拟信号必须在交换站采样,这表示上传的数据率被限制为33.6kbps,但是下载时却没有采样问题,信号不受量化噪声的影响,因而不会收到香农定理的容量限制。
电话公司对话音信号采样的速度是每秒
8000 个采样,每个采样用 8 位编码。每个采样中需要 1 位用于控制,这就意味着每个采样为 7 位。因此数据率就是 8000X7 ,或 56000bps=56kbps

DSL技术
高速接入数字用户线(DSL)技术使用现有的本地用户线(即电话线)来支持高速数字通信。
这组技术常记为: xDSL, 这里的x可以是A,V,H,S。比如ADSL, VDSL。

ADSL
非对称数字用户线(ADSL)像56k调制调节器一样,在下行方向可提供比上行方向更高的速率,这就是它非对称的原因。ADSL的设计者特意不平均的分割本地环路中居民用户的可用带宽。

带宽划分:

  • 话音(信道0), 为话音通信保留。
  • 空闲(信道1~5),未使用,以便在话音和数据通信之间留有间隙。
  • 上行数据和控制(信道6~30),25各信道用于上行数据的传送和控制。一个信道用于控制,其他24各数据传送。
  • 下行数据和控制(信道31~255),255个信道由于信噪比较高,实际的比特率要大大低于以上数值。

实际中: 用户住宅由调制调解器 ADSL 连接计算机。 ADSL 和电话线连接一个过滤器,作用就是把话音通信和
数据通信分开。ADSL 调制调解器对数据进行调制并建立下行和上行
而电话公司这一端,不使用 ADSL,使用数字用户线接入复用器 DSLAM 的设备,功能与其相视,但是它还要将发送到因特网的数据打包。

PPP(点到点协议)

虽然电话公司提供了物理链路,但还需要专门的协议来控制和管理数据的传送。PPP(点到点协议)就是为此设计的。在数据链路层,PPP定义了帧的格式,用于控制链路和传送用户数据的协议。

以太网的 PPPoE 是一个新协议,它使用一种发现技术来找出需要连接因特网的主机的以太网地址(即: 拨号),这个地址发现后,就可以正常使用。

接口的物理特性

物理层定义了设备和传输媒介之间的接口特性。

  • 比特的表示: 数据由一串没有任何解释的比特流(0和1的序列)组成。发送时比特必须景观编码变成信号(电信号或光信号)。物理层对编码的类型进行了定义(即: 0和1怎么变为信号)
  • 传输率: 每秒发送的比特数。
  • 比特同步: 发送设备和接收设备不仅要使用同样的比特率,而且要在比特级进行同步,换而言之,发送设备和接收设备的时钟必须同步。
  • 线路配置: 物理拓扑定义了设备如何连成一个网络。设备的连接可使 网状拓扑(每个设备都和其他设备连接), 星状拓扑(所有设备通过中央设备连接),环形拓扑(每个设备都能连接到下一个设备而形成环),总线拓扑(所有设备都在一个公共链路上)
  • 传输方式: 单工(只有一个设备可以发送,另一个设备只能接收),半双工(都可以发送和接收,但不能同一时间进行),全双工(2个设备可同时发送和接收)

数据链路层

通信单位: 帧
物理层只是简单的把计算机连接起来并在上面传输比特流,它还存在着很多问题:

  • 物理连接是有差错和不可靠的
  • 物理设备之间可能存在传输速度不匹配的问题

也就是说仅仅靠物理层是无法保证数据传输的正确性的。

数据链路层的主要作用就是加强物理层传输原始比特流的功能(把物理层转换为可靠的链路),将可能出错的物理连接改造成逻辑上无差错的数据链路使之对网络层表现为一条无差错的链路。 再此基础上,还肩负为网络层提供服务的责任,其中最基本的服务是将来自网络层的IP数据报封装成帧,可靠的传输到相邻节点的目标网络层。

数据链路层功能:

  • 组帧,把网络层收到的比特流划分成可以处理的数据单元,称之为帧。
  • 物理编址,这些帧需要发送给本网络内的另一个系统,那么要在帧上加一个首部,指明帧的发送方/接收方。如果这个帧要发送给本网络以外的系统,则接收方地址应该是本网络和下一个网络的连接设备地址。
  • 流量控制,如果接收方接收数据的速率小于发送方生产数据的速率,那么就应该使用流量控制机制来预防接收方因负荷而无法工作。
  • 差错控制,检测并重传受损的帧或丢失的帧,因而使物理层增加了可靠性,还采取某种机制来识别重复的帧。差错控制通常是在帧的后面加上一个尾部来实现的。

1985年,为了建立一些标准,使来自不同设备之间能互相通信,IEEE计算机协会启动了一个项目,称为 802 项目,主要用来指明局域网协议中物理层和数据链路层功能的一种途径。IEEE将数据链路层进一步划分为2层:逻辑链路控制(LLC)和媒体介入控制(MAC)

组帧

因为物理层只是简单的传输比特流(0,1),如果这些组合传送毫无规则的话,计算机是解读不了的,因此发送端在数据链路层接收到上层网络传输层传过来的IP数据报后,在其前后添加首部,尾部,这样构成了一个。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到比特流中识别帧的开始和结束。

帧格式:
以太LAN网中发送的分组称为帧。包含7各字段:

  • 前同步码
  • SFD
  • DA
  • SA
  • 数据单元的长度/类型
  • 上层数据
  • CRC

物理编址(MAC地址)

MAC地址就是链路层地址,长度6字节(48位),十六进制记法的物理地址,通过冒号将字节隔开,用于比唯一标识网络适配器(网卡)。这个地址称为数据链路地址,物理地址,MAC地址。
一台主机拥有多少个网络适配器就有多少个MAC地址,至于一台计算机如何直到另一台计算机的MAC地址,这属于网络层ARP地址解析协议做的事情。

单播,多播和广播地址,源地址始终都是单播地址,因为任何帧都只可能来自一个站。如果目的地址的第一个字节的最低位是0,那么就是单播地址。
单播地址仅指定一个接受者,发送方和接收方是一对一关系。多播地址是指定一组地址,是一对多关系。广播地址是多播地址的特殊形式,它的接受者是该局域网中所有的站。一个广播目的地址是由48各1组成,所有位都是1。

技巧: 例如 4A:30:10:21:10:1A 先查看左手的十六进制数,将十六进制的A转换为二进制1010,然后看最后一位. 如果他是偶数,那么就是单播地址,反智就是多播,如果所有位都是FFFFF,那么就是广播地址。

网络层

通信单位: 数据报
进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层负责把选择何时的网间路由和交换节点,确保数据及时传送。在发送数据时,网络层把运输层产生的报文段用户数据报封装成分组和包进行传送。

在TCP/IP体系结构中,由于网络层使用IP协议,因此分组也叫做IP数据报,简称数据报。 在TCP/IP体系结构中,只有5层,它将应用层,表示层,会话层合并为一个层。

网络层功能:

  • 逻辑编址,由数据链路层实现的物理编址处理的是本地寻址问题,如果分组穿过的网络的边界,就需要另一种编址系统来区分源系统和目的系统。网络层给从上层传来的分组附加一个首部,其中包括发送方和接收方的逻辑地址以及其他信息。
  • 路由选择,当多个独立网络或链路设备互相连接组成互联网或更大网络时,这些连接设备(路由器或交换器)就要为数据分组选路或交换以达到目的。

相关协议:

  • IP 协议
  • ICMP 协议
  • ARP 协议
  • BOOTP 协议

IP协议

IP(网际协议), 处理数据包的路由选择,用于屏蔽下层物理网络的差异,为上层提供统一的IP数据报。
ip.png

IP协议定义的地址,我们称为IP地址,IP数据报中含有发/收方的IP地址

IP协议提供无连接、不可靠、尽力的数据报投递服务。

  • 1)无连接的投递服务
    发送端可于任何时候自由发送数据,而接收端永远不知道自己会在何时从哪里接收到数据。每个数据报独立处理和传输, 一台主机发出的数据报序列,可能取不同的路径, 甚至其中的一部分数据报会在传输过程中丢失;
  • 2)不可靠的投递服务
    IP 协议本身不保证数据报投递的结果。 在传输的过程中,数据报可能会丢失、重复、延迟和乱序等, IP协议不对内容作任何检测,也不将这些结果通知收发双方; I 数据报的丢失,通过路由器发 ICMP报文 告知; 必要时,由高层实体(如TCP)负责差错恢复动作。
  • 3)尽力投递服务
    执行数据报的分段和封装,以适应具体的传输网络, 由最终结点的IP模块进行合段处理
    不同物理网络对传输的帧 /分组的体积有不同的规定; 当数据报长度 > MTU(最大传输单元 MTU—Maximun Transfer Unit )时,需对数据报分段 。

ARP 地址解析协议

ARP(Address Resolution Protocol)协议可以实现由IP地址得到MAC地址。
每个主机都有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到MAC地址的映射表。至于如何知道对方计算机IP地址,这是应用层DNS协议做的事情。

如果主机 A 知道主机 B 的 IP 地址,但是 ARP 高速缓存中没有该 IP 地址到 MAC 地址的映射,此时主机 A 通过广播的方式发送 ARP 请求分组(该分组携带自己的 IP 地址 和 MAC 地址 以及 目标主机的 IP 地址),主机 B 收到该请求后会发送 ARP 响应分组 给主机 A 告知其 MAC 地址,随后主机 A 向其高速缓存中写入主机 B 的 IP 地址到 MAC 地址的映射。

传输层

负责完整报文的进程到进程的交付,进程是运行在主机上的应用程序。确保整个报文原封不动的按序到达,它要监督从源点到终点这一级的差错控制和流量控制。通信单位:报文段,分组或用户数据。

网络层的功能是建立主机到主机的通信,而传输层的功能是建立端口到端口的通信(也可以说进程到进程的通信)。 IP地址+端口号=某个主机的某个应用进程

传输层功能:

  • 服务点编址,计算机往往同时运行多个程序,因此交付并不仅仅是从计算机交付到计算机,同时还指从特定进程交付到特定进程。因此传输层的首部必须包括一种称为服务点地址或端口地址,才能将各个分组送抵正确的计算机和进程。
  • 分段与包装,一个报文被划分成若干个可传输的报文段,每个报文段应包含一个序号,当报文抵达终点时,传输层利用这些序号,把它们重新组装起来,同时在能识别并替换丢失的分组。
  • 流量控制,与链路层一样,不同的是传输层的流量控制是端到端的,而不是单条链路上的流量控制。
  • 差错控制,与链路层一样,不同的是出传输层的差错管理是端到端的。

相关协议:

  • TCP 传输控制协议
  • UDP 用户数据报协议

TCP协议

TCP(传输控制协议, Transmission Control Protocol)定义在RFC793中,是一种传输协议,提供面向连接的可靠字节流服务。

特点:

  • 要交换数据必须通过3此握手建立连接
  • 提供超时重发,丢弃重复数据,分段,重装,差错检测,检验数据,流量控制等功能
  • 传输大小无限制,可进行大数据传输
  • 协议可靠,保证能完整接收到全部数据

数据传输:意味着应用可以依赖该连接以得到正确的顺序无错的所有数据。
流量控制:如果某一端的应用可能难以像他被接收信息那么迅速的处理信息,那么强迫发送分组的中断系统降低其分组发送速率
拥塞控制: 防止因特网进入卡锁状态。当一个路由点拥塞,其缓冲区可能溢出,从而发生分组丢包现象,这个服务强迫降低发送速率来避免此问题

大部分应用程序由TCP提供面向连接的服务:

  • TELENT 远程登陆
  • SMTP 电子邮件
  • FTP 文件传输
  • HTTP 网页
  • DNS 域名解析

TCP的三次握手

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的“连接”,其实是客户端和服务端保存的一份关于对方的信息,如ip地址、端口号等。
TCP可以看成是一种字节流,它会处理IP层或以下的层的丢包、重复以及错误问题。在连接的建立过程中,双方需要交换一些连接的参数。这些参数可以放在TCP头部。
一个TCP连接由一个4元组构成,分别是两个IP地址和两个端口号。一个TCP连接通常分为三个阶段:连接、数据传输、退出(关闭)。通过三次握手建立一个链接,通过四次挥手来关闭一个连接。
当一个连接被建立或被终止时,交换的报文段只包含TCP头部,而没有数据。

image.png**
上图中有几个字段需要重点介绍下:
(1)序号:seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
(2)确认序号:ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1。
(3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:

  • ACK:确认序号有效。
  • FIN:释放一个连接。
  • PSH:接收方应该尽快将这个报文交给应用层。
  • RST:重置连接。
  • SYN:发起一个新连接。
  • URG:紧急指针(urgent pointer)有效。

需要注意:

  • 不要将确认序号ack与标志位中的ACK搞混了。
  • 确认方ack=发起方seq+1,两端配对。

三次握手的本质是确认通信双方收发数据的能力

首先,我让信使运输一份信件给对方,对方收到了,那么他就知道了我的发件能力和他的收件能力是可以的。
于是他给我回信,我若收到了,我便知我的发件能力和他的收件能力是可以的,并且他的发件能力和我的收件能力是可以。
然而此时他还不知道他的发件能力和我的收件能力到底可不可以,于是我最后回馈一次,他若收到了,他便清楚了他的发件能力和我的收件能力是可以的。
这,就是三次握手。

四次挥手

四次挥手的目的是关闭一个连接


UDP协议

UDP(用户数据协议, user Datagram Protocol)定义在RFC768中,是一种无连接的简单的面向数据包的传输协议。

特点:

  • 不提供可靠性,发送数据的顺序,对方是否接收,都不保证
  • 通讯不许连接,且没有重发等机制,传输速度快,可实现广播发送。
  • 传输数据大小限制,数据包必须限定在64KB之内

UDP的特点可以应用与如下场景:

  • 多媒体应用
  • 因特网电话
  • 音频
  • 视频会议
  • 直播

会话层

对某些进程来说,下四层(物理层,数据链路层,网络层,传输层)提供了服务还不够充分。会话层就是网络的对话控制器。它用于建立,维护并同步正在通信的系统之间的交互。

会话层功能:

  • 对话控制,允许2各进程之间的通信按半双工或全双工进行。
  • 同步,允许进程在数据流中插入若干检查点(同步点)。如某个系统要发送2000页的文件,那么可以在每100页后插入一个检查点,保证了每100页为一个单元的数据独立接收和确认,这种情况下如果传输到523页时,计算机崩溃了,那么系统回复后只需重传501-523页。

表示层

考虑2各系统所交换的信息和语法和语义。

表示层功能:

  • 转换,分别位于2各系统上的进程所交换的信息通常都是字符串数字等,这些信息在被传送之前必须变为比特流。由于不同计算机使用不同的编码系统,表示层的任务就是在不同编码方法之间提供互操作性。发送方的表示层把信息从发送方相关的格式转换为一种公认的格式,从而接收方表示层把这种公认的格式转换为接收方相对应的格式。
  • 加密,为了携带敏感信息,一个系统必须能够做到保密。
  • 压缩,数据压缩减少了信息中包含的比特数,在传输多媒体信息时,数据压缩特别重要。

应用层

应用层规定的是应用进程间的通信和交互。由于传输层传来的数据五花八门,有html格式的,有mp4格式等,所以对于不同的网络需要不同的应用层协议。比如: 电子邮件(SMTP),网页(HTTP)等。应用层交互的数据单元称为报文

运行在TCP协议上的协议

  • HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。
  • HTTPS(HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。
  • FTP(File Transfer Protocol,文件传输协议),用于文件传输。
  • POP3(Post Office Protocol, version 3,邮局协议),收邮件用。
  • SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。
  • TELNET(Teletype over the Network,网络电传),通过一个终端(terminal)登陆到网络。
  • SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陆用。

运行在UDP协议上的协议

  • BOOTP(Boot Protocol,启动协议),应用于无盘设备。
  • NTP(Network Time Protocol,网络时间协议),用于网络同步。
  • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。

运行在TCP和UDP协议上

  • DNS(Domain Name Service,域名服务),用于完成地址查找,邮件转发等工作。

Web/HTTP

Web页面的应用层协议HTTP是Web的核心。定义Web客户端(浏览器)如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户。
Web页面由多个对象构成,对象(object)仅仅是可由单个URL寻址的文件,例如:HTML文件,JPEG图像,GIF图像,等。

HTTP服务器不维护客户的状态,是一个无状态的协议。

HTTP/1.0和1.1都把TCP作为底层传输协议。HTTP客户端首先发起建立与服务器TCP的连接,一旦连接建立,浏览器进程和服务器进程就可以通过各自的套接字来访问TCP。
TCP的拥塞控制机制,迫使每个新的TCP连接一开始以相对缓慢的速率传输数据,只要网络不拥塞,每个连接可以迅速上升相对高的速率,这个慢速传输的初始化阶段称为: 缓启动

HTTP消息格式

下面是一个典型的HTTP请求消息:

  1. GET /somedir/pago.html HTTP/1.1
  2. Host: www.someschool.edu
  3. Connection: close
  4. User-agent: Mosilla/4.0
  5. Accept-language: fr

这个消息是ASCII文本写的,一共五行,每行以回车符和换行符结束,最后一行后面额外一个回车符和换行符。
该消息第一行被称为请求行,后续各行都称为请求头。

第二个头部行
Connection: close 告知服务器本浏览器不想使用持久连接。
非持久连接:每次服务器发送一个对象之后,相应的TCP被关闭,每个TCP连接只传输一个请求消息和一个响应消息。
持久连接**: 又分为不带流水线和带流水线。

下面是一个典型的HTTP响应消息:

HTTP/1.1 200 OK
Connection: close
Date:Thu,06 Aug 1998 12:00:15 GMT
Server:Apache/1.3.0(Unix)
Last-Modified: Mon, 22 Jun 1998 09:23:24 GMT
Content-Length: 6821
Content-Type: text/html
(数据 数据 数据...)

响应消息分为3个部分: 1个起始的状态行,6个头部行,1个包含所请求的对象本身的附属体。
**

  • Connection: close告诉客户端,自己将在发送本消息后关闭TCP连接。
  • Date:头部行指出服务器创建并发送响应消息的日期和时间
  • Server:头部行指出本消息是由哪个服务器产生的
  • Last-Modified:指出对象本身的创建或修改日期,这个头部对于缓存至关重要。
  • Content-Length:指出所发送对象的字节数
  • Content-Type:指出附属体中的是HTML文本

SMTP(邮件服务)

发送过程:首先,运行在发送邮件服务器主机上的 SMTP 客户,发起建立一个到运行在接受邮件服务器主机上的 SMTP 服务器端口号 25 之间的 TCP 连接。如果接受邮件服务器当前不在工作,SMTP 客户就等待一段时间后再尝试建立连接。这个连接建立之后,SMTP 客户和服务器先执行一些应用层握手操作。再这个 SMTP 握手阶段,SMTP 客户向服务器分别指出发信人和收信人的电子邮件地址。彼此自我介绍之后,客户发出邮件消息。SMTP 可以指望由 TCP 提供的可靠数据传输服务吧该消息传送到服务器.如果客户还有其他邮件消息需要发送同一服务器,他就在同一个 TCP 连接上重复上述过程.

脚注