计算机网络的分类(略)
协议
协议定义了通信的方式和进行通信的时间,主要包括语法、语义和同步3个关键要素。
语法:定义了所交换数据的格式和结构,以及数据出现的顺序。
语义:定义了发送者或接受者所要完成的操作,包括对协议控制报文组成成分含义的约定。
同步:定义了事件实现顺序以及速度匹配。体现在当两个实体进行通信时,数据发送的事件以及发送的速率。
通常将每个层次称为一个实体,不同机器上对应层的实体叫做对等体。对等体之间利用协议来实现它们之间的通信,同时每一层实体使用其下一层实体为它提供的服务来实现本层协议,同时向它的上一层实体提供服务。
TCP/IP体系结构(牢记于心)
各层关系
链路层
负责接收网络层的IP数据报并通过网络发送到网络传输介质上,或者从网络上接收物理帧,抽出IP数据报,交给网络层。如以太网、令牌网等。
网络层
由于该层的主要协议为IP,通常也简称为IP层。该层主要负责相邻计算机之间的通信,把某主机(信源)上的数据包发送到因特网中的任何一台目标主机(信宿)上,即点到点通信。网络层协议包括IP(网际协议)、ICMP(因特网控制报文协议)和IGMP(因特网组管理协议)。
传输层提供的就是应用程序间的通信,一般也称为端到端的通信。(可靠)
主要包括超文本传输协议(HTTP),简单网络管理协议(SNMP),文件传输协议(FTP),简单邮件传输协议(SMTP),域名系统(DNS),远程登录协议(Telnet)等。
常见协议示意图(牢记在心)
差错控制:
检错编码:奇偶校验码,循环冗余码
纠错编码:海明码
CSMA/CD协议,是在局域网中被广泛应用的介质访问控制协议(暂时省略)
以太网
以太网采用总线拓扑结构,所有计算机都共享一条总线,信息以广播方式发送。为了保证数据通信的方便性和可靠性,以太网采用CSMA/CD技术对总线进行访问控制。考虑到局域网信道质量好,以太网采取了以下两项重要的措施使得通信更加简便。(以太网提供的服务是不可靠的)
1)采用无连接的工作方式
2)不对发送的数据帧进行编号,也不要求对方发送确认。
以太网的MAC帧
目的地址、源地址都为硬件地址,类型表示上层协议类型,FCS循环冗余校验,校验首部和数据。
网桥和交换机(隔离冲突域,省略)
类别 | 类标识 | 十进制 | 选用范围 |
---|---|---|---|
A | 0 | 1~126 | 大型网络 |
B | 10 | 128~191 | 中型网络 |
C | 110 | 192~223 | 小型网络 |
D | 1110 | 224~239 | 多播地址 |
E | 11110 | 240~247 | 保留地址 |
种类 | 网络地址 | 主机地址 | 范例 | 说明 |
---|---|---|---|---|
网络地址 | 指定网络地址 | 全0 | 157.34.0.0 | |
直接广播地址 | 指定网络地址 | 全1 | 157.34.255.255 | |
受限广播地址 | 全1 | 全1 | 255.255.255.255 | |
本网络本主机地址 | 全0 | 全0 | 0.0.0.0 | |
本网络特定主机地址 | 全0 | 制定主机地址 | 0.0.123.24 | |
环回地址 | 127 | 任意值 | 127.0.0.0 | |
私有地址 | A类:10.0.0~10.255.255.255 B类:172.16.0.0~172.31.255.255 C类:192.168.0.0~192.168.255.255 | 只能在内部网络,不能用在因特网上,与因特网地址不冲突 |
子网
针对B类和A类地址可能造成浪费的现象,在两级地址结构的基础上提出了3级结构,即把每个网络的主机地址空间根据需要进一步划分成若干个子网。因此子网内主机的IP地址就由3部分来构成:网络地址、子网地址和主机地址。
CIDR无类别域间路由
无类地址常常采用斜线表示法,将地址和掩码一起表示出来,其格式为:W.X.Y.Z/n。
地址解析协议(ARP)和反向地址解析协议(RARP)
地址解析协议(ARP)工作过程:广播请求获取目的主机的物理地址的数据报,目的主机以单播方式向发送请求物理地址的主机回送解析结果
ARP直接封装在链路层数据报中
网际协议(Internet Protocol,IP)作为TCP/IP协议族中的核心协议,提供了网络数据传送的最基本服务,同时也是实现网络互连的基本协议。主要特点如下。
IP是一种点对点协议,虽然IP数据报携带源IP地址和目的IP地址,但进行数据传输时的对等实体一定是同一物理网络中的对等实体。
IP不保证传输的可靠性,不对数据进行差错校验和跟踪,当数据报发生损坏时不向发送方通告,如果要求数据传输具有可靠性,则要在IP层的上面使用其他协议加以保证。
IP提供无连接数据报服务,各个数据报独立传输,可能沿着不同的路径到达目的地,也可能不会按序到达目的地。
记忆方法:你不要总是拿1条首饰(首4)来骗(偏)我吧(8)
IPv6由当前IPv4的32位扩充到128位,总数3.4*1038
冒号十六进制表示法,即将128位地址表示位X:X:X:X:X:X:X:X,其中X是8个16位地址段的十六进制值,如FEDC:BA98:7654:4210:FEDC:BA98:7654:3210。
零压缩表示法: 用::简化多个0位的16位组
IPv6中地址有3种类型:
单播地址(Unicast) :一个单接口标识符,送往单播地址的数据包将被传送到该地址所标识的接口上。
任意播地址(Anycast):一组接口(一般属于不同节点)的标识符。送往一个任意播地址的数据包将被传送到该地址所标识的接口之一(即根据路由协议中的距离的计算方法而确定的“最近”的一个)。
多播地址(Multicast) :一组接口(一般属于不同节点)的标识符。送往一个多播地址的数据包将被传送到该地址标识的所有接口上。
概念:移动IP应用于所有基于TCP/IP网络环境中,它为人们提供了无限广阔的网络漫游服务。譬如:在用户离开北京总公司,出差到上海分公司时,只要简单地将移动节点(例如:笔记本电脑、PDA设备)连接至上海分公司网络上,那么用户就可以享受到跟在北京总公司里一样的所有操作。用户依旧能使用北京总公司的共享打印机,或者可以依旧访问北京总公司同事电脑里的share文件及相关数据库资源;诸如此类的种种操作,让用户感觉不到自己身在外地,同事也感觉不到你已经出差到外地了。
原理:在移动互联网中如何实现移动IP?首先每个网络中都需要部署代理路由器,每一部本地的终端设备都会在这个代理路由器上注册(如同每个手机号码都在归属地注册),终端设备会获得一个归属于此网络的IP地址,所有数据包都可以以终端IP地址作为目的地址到达这个终端设备。这个代理路由器称为家乡代理(Home Agent,HA)。其次需要部署外地代理服务器。当终端设备漫游到外地网络时,终端设备需通知家乡代理以及所在网络的代理路由器,这个代理路由器称为外地代理(Foreign Agent,FA)。家乡代理和外地代理之间将建立一个隧道。(如同手机在漫游地注册,然后漫游地网络通知手机号码的归属地网络)。再次需要使用隧道技术。在通信的过程中,数据包仍然将终端设备的原地址作为目的地址,首先到达家乡代理。家乡代理根据终端设备的记录,通过隧道,将这个数据包转发给外地代理。外地代理再转发给处于外地网络中的终端设备。(如同电话先达到被呼叫号码的归属地网络中,归属地网络根据被呼叫号码的漫游记录,把电话转到漫游地,再由漫游地网络互通手机。)
IP是一种不可靠的,无连接的数据报传输协议,提供了一种尽力而为的点到点数据传输服务,但不能保证所有数据报都可以成功地从信源到达信宿。
为此人们在网络层(也称为IP层)引入了另外一种协议——网际控制报文协议(InternetControl Message Protocol,ICMP)来实现IP层数据报传输过程中的差错控制。通过ICMP配合IP的使用,提高了数据报传递的成功率。
ICMP是IP的补充,用于IP层的差错报告、拥塞控制、路径控制以及路由器或主机信息的获取。
ICMP报文格式与类型:
类型:用于定义ICMP报文类型。
代码:用于标识发送这个特定报文类型的原因。
校验和:用于数据传输过程的差错控制,提供ICMP整个报文的校验和。
首部其他部分:由报文类型来确定相应内容,大部分差错报告报文未使用该字段;
数据:提供了ICMP差错和状态报告信息,内容因报文类型而异
ICMP虽然是IP层的协议,但其报文是以IP数据报形式进行传递的,即ICMP报文本身被封装在IP数据报的数据区中。包含ICMP报文的IP数据报首部的协议类型字段被设置为1。
目的网络:用于定义目的主机(特定主机)地址、目的网络(特定网络)地址或默认路由(0.0.0.0)。
子网掩码:用于定义网络掩码值,通过将子网掩码和IP数据报的目的IP地址进行逻辑与操作,可以获取目的主机所在的网络地址或子网地址
下一跳地址:用于定义数据报在通往信宿的过程中当前必须走的下一跳IP地址。
输出接口:用于定义数据报传送时所对应接口的IP地址。路由器通过该接口将数据送往下一个路由器或信宿网络
度量:用于定义路由的度量值,度量从本节点出发去往信宿的距离。跨越的路由器个数,跳数。
路由器选择流程:
通过判断距离来查找到达远程网络的最佳路径。即每个路由器都构造一个包含从本路由器出发去往目的网络的最短距离路由信息(V,D),其中V代表可到达的信宿,D代表距离;
路由器周期性地将自己的最短距离路由信息发送给与它直接相连的所有邻居;
相邻的路由器收到该信息后,将它与自己原来已有的最短距离路由信息进行组合,进而得到完整的连接到所有可能到达的目的网络的路由信息。
距离向量路由算法虽然简单、易于实现,理论上能有效工作,但在实际运用中却存在很大缺陷。
解决方法
限定最大跳数,当路由表中的度量值等于或大于该值时认为该路径有故障,这样便加快了收敛速度;
水平分割技术,即当一个节点把路由表的更新信息发送给相邻节点时,它并不把从各相邻节点处学到的路由信息再回送给该节点;
带反向抑制的水平分割技术,即允许节点将其从相邻节点处学到的路由信息反馈给该节点,但是反馈信息中加了否定标志,以确保其相邻节点不会采用该反馈信息。
系统中的每个路由器通过从其他路由器获得的信息,构造出当前网络的拓扑结构。
根据这一拓扑结构,利用Dijkstra算法形成一棵以本路由器为根节点的最短路径优先树,该树反映了从本路由器出发去往当前网络中其他路由器节点的最短路径。
链路状态算法的收敛速度相对较快,并且要比距离向量算法能更有效地避免路由回路的出现。
但是其需要占用更多的CPU处理时间和系统资源,因此比距离向量算法的实现成本更高。
链路状态选路算法的工作原理如下:
(1)在参与链路状态选路的路由器集合中,每个路由器都需要通过某种机制来了解自己所连接的链路及其状态。
(2)各路由器都能够将其所连接的链路的状态信息通知给网络中的所有其他路由器,这些链路信息包括链路状态、费用以及链路两端的路由器等。
(3)链路状态信息的通过链路状态分组(LSP)来向整个网络发布。一个LSP通常包含源路由器的标识符、相邻路由器的标识符,以及而知之间链路的费用。每一个LSP都将被网络中的所有的路由器接收,并用于建立网络整体的统一拓扑数据库。由于网络中所有的路由器都发送LSP,经过一段时间以后,每一个路由器都保持了一张完整的网络拓扑图,再在这个拓扑图上,利用最短通路算法(例如Dijkstra算法等),路由器就可以计算出从任何源点到任何目的地的最佳通路。
这样,每一个路由器都能够利用通路最短的原则建立一个以本路由器为根、分支到所有其他路由器的生成树,依据这个生成树就可以很容易地计算出本路由器的路由表。
内部网关协议IGP(Interior Gateway Protocol),即在一个自治系统内部使用的路由选择协议。主要包括:
路由信息协议(Routing Information Protocol, RIP)
开放路径最短优先协议(Open Shortest Path First,OSPF)。
外部网关协议EGP(External Gateway Protocol),即自治系统之间使用的路由选择协议。
路由信息协议(RIP)是一个广泛使用的内部网关协议,采用距离向量算法。
作为基于距离向量算法的路由选择协议,RIP把到达目的网络的“距离”作为选择路由的度量,而“距离”一般指跳数,也就是所经过的路由器数量。每经过一个路由器,跳数就增加1,也就是“距离”增加1。RIP认为一条好的路由就是它所经过的路由器数量最少的路由。
为了避免跳数计数到无穷的问题,最大跳数设为15。
RIP报文的封装格式:
开放最短路径优先协议
开放最短路径优先协议 (Open Shortest Path First, OSPF) 是由IETF IGP工作小组提出的,一种基于SPF算法的路由协议。
与RIP不同,在OSPF协议中,没有跳数限制,并且选择最佳路径的度量标准可以基于带宽、延迟、可靠性和负载等服务类型。
因此,OSPF协议是目前因特网和企业网采用最多、应用最广泛的路由协议之一。
OSPF原理
分层思想,将网络划分为不同的区域
区域内路由器以泛洪的方式在区域内交换信息
在区域边界定义一个边界路由器,负责汇总该区域的信息,并将信息传递给其他区域
OSPF数据报文的类型有5种
问候报文(Hello)
数据描述报文(Database Description,DD)
链路状态请求报文(Link State Request,LDR)
链路状态更新报文(Link State Update,LSU)
链路状态应答报文(Link State Acknowledgment,LSA)
在OSPF报文传输的过程中,直接被封装为IP数据报进行传递。
边界网关协议BGP
采用了路径向量算法,其与距离向量算法的主要区别在于:
其一是舍弃了路由度量值,不包含距离或费用的估计值;
其二是每个路由信息块列出沿某路由到达目标网络要经过的所有自治系统。
因此在BGP中,路由表包含目的网络、下一跳路由器和去往目的网络的路径等信息。其中路径由一系列按序的自治系统号构成。
BGP路由器的信息交换过程
建立基于TCP的通信连接,然后BGP路由器之间通过交换BGP报文来打开连接并确认连接参数。在连接建立过程中,如果邻站不同意,就发送出错通知并关闭连接。
两个BGP路由器之间建立连接后,首先交换所有的BGP路由信息;而正常运行后,通常只在网络信息发生变化时才发送增量路由更新信息,以减少交换的信息量。路由器在接收到邻站路由器的更新信息后,将更新自己的路由信息。BGP路由器并不周期性发送路由更新,且BGP路由更新只包含到某网络的最佳路径。
如果没有路由变化,则BGP路由器将周期性地发送保活报文来维持BGP连接,缺省情况下每60秒发送一次保活报文。
传输控制协议(Transmission Control Protocol,TCP)提供一种面向连接的、可靠的数据传输服务,保证了端到端数据传输的可靠性。
向应用进程提供面向连接的服务,两个需要通过TCP进行数据传输的应用进程之间首先必须建立一个TCP连接,并且在数据传输完成后要释放连接。一般将请求连接的应用进程称为客户机进程,而响应连接请求的应用进程称为服务器进程,即TCP连接的建立采用的是一种客户机/服务器工作模型。
提供全双工数据传输服务,只要建立了TCP连接,就能在两个应用进程间进行双向的数据传输服务,但是这种传输只是端到端的传输,不支持广播和多播。
提供面向字节流的服务,即TCP的数据传输是面向字节流的,两个建立了TCP连接的应用进程之间交换的是字节流。发送进程以字节流形式发送数据,接收进程也把数据作为字节流来接收。端到端之间不保留数据记录的边界,也就是说在传输的层面上不存在数据记录的概念。
TCP报文结构
校验和:用来校验整个TCP报文段的所有数据的正确性,包括TCP首部和数据。
校验和计算:
TCP流量控制
两种极端情况:发送方每发送一个字节都要等待接收方确认,通信效率低;发送方不关心接收方是否确认,不断发送数据,从而可能造成接收方缓冲区溢出,丢失数据。
通过流量控制来定义发送方在收到接收方的确认报文之前可以发送的数据量。滑动窗口是TCP实现流量控制的关键技术。
当发送应用进程产生数据很慢,或者接收应用进程接收处理数据很慢时,或者两种情况都存在时,在滑动窗口的操作中有可能出现发送方每次只发送包含一个字节(或较小字节数)的报文段,同时接收方每次也仅对接收到的包含一个字节(或较小字节数)的报文段进行确认。
这样势必大大降低网络带宽的使用效率,此时通常也称为出现了傻瓜窗口综合症。为此,在TCP中主要引入了3种策略予以改进。
解决办法:
Nagle算法:主要针对发送方产生数据比较慢,而造成发送报文段包含数据量比较小的情况,其主要思想是强迫发送方等待,让它收集发送数据,以便发送大块数据,即通过降低发送次数来加大每次发送的数据量。
Clark算法:主要针对接收方接收处理数据较慢,而造成频繁发送确认报文的情况。即只要接收方的接收缓冲区已满,则每次接收到TCP报文后返回窗口值为0的确认报文,以停止发送方的数据发送,直到接收缓冲区的空闲区域已经能容纳最大长度的报文段或有一半以上的接收缓冲空间已经空闲,再发送一个窗口值不为0的确认窗口,以重新更新发送方的滑动窗口大小,使发送方可以继续发送报文段。
延迟确认算法:当接收方收到报文段后,并不马上回复确认报文,而是等接收缓冲区已经有一定数量的空闲空间后,再回送确认报文段。
TCP拥塞控制
中间路由器或物理链路的超载势必也会引起数据传输的严重延时,即网络拥塞。如何处理?
在TCP中引入了慢启动和拥塞避免两种策略机制来实现对拥塞窗口大小的控制,进而来避免和消除网络拥塞。
发送方引入拥塞窗口,利用该窗口来控制发送方发送数据的速率
拥塞窗口由发送方指定,实际发送窗口的大小从拥塞窗口和流量窗口中选择较小的窗口。
慢启动算法
在建立连接时,发送方将拥塞窗口大小初始化为一个最大报文段的大小MSS,然后每收到一个接收方的对新报文段确认报文,拥塞窗口的大小就增加一个MSS,即对每一个发送方所发送的新报文段的确认都将使拥塞窗口的大小增加一个MSS。
拥塞避免算法
为了避免拥塞窗口过快增长,尽量避免拥塞现象的出现。当拥塞窗口大小达到一个门限值时,便采取拥塞避免算法来改变拥塞窗口的大小,其方法是每收到一个确认报文,拥塞窗口大小增加一个MSS,即使该确认报文是针对多个报文段的,拥塞窗口也只增加一个MSS。
重传定时器
由于上述两种策略都将使拥塞窗口变得很大,进而造成网络拥塞的发生。为此,TCP/IP中引入了重传定时器。当由于网络拥塞使重传定时器超时的时候,发送方则进入拥塞解决阶段。
发送方在进行TCP报文段重传的同时,将拥塞窗口的门限值调整为拥塞窗口的一半,并将拥塞窗口恢复成一个MSS,然后进入新一轮的调整。
TCP差错控制
对于丢失或受损的报文段,发送方将依靠超时确认机制驱动报文段重发来解决。
出现重复报文段时,接收方只是简单地丢弃重复报文段。
出现报文段失序的情况后,TCP采用了延迟确认的方式予以解决,即当接收方收到失序报文段后不会马上确认,而是先将其存放在缓冲区中,当被确认报文段之前的所有报文段都已经收到了才回送确认报文。
当接收方的确认报文出现丢失等差错后,TCP引入了累计确认机制,即当一个确认报文段丢失后,系统可以不予理睬,后面所接收到的确认报文段可以确认,一直到该报文段中的确认号指明的字节为止的所有字节都已经收到。
用户数据报协议(User Datagram Protocol,UDP)是传输层的两个主要协议之一,相对TCP来说,UDP是一种非常简单的协议,在网络层的基础上实现了应用进程之间端到端的通信。
UDP提供的是一种无连接的、不可靠的数据传输方式,在数据传输过程中没有流量控制和确认机制,数据报可能会丢失、延迟、乱序到达信宿。
UDP只是提供了利用校验和检查数据完整性的简单差错控制,属于一种尽力而为的数据传输方式。
首部一共8字节
源端口号:即运行在信源机的应用进程所使用的端口号。
目的端口号:即运行在信宿机的应用进程所使用的端口号。
数据报总长度:定义了用户数据报的总长度,即UDP数据报的首部和数据的长度和。
校验和:用于检验整个用户数据报的差错。
UDP用户数据报传输队列
UDP用户数据报传输队列与UDP端口相关联,因此每个使用UDP协议的应用进程都包含一个输入队列和一个输出队列。
当UDP为某个应用进程临时分配一个UDP端口号时也同时在内存中创建了一个输出队列和输入队列。
当用户进程发送数据报时,将该数据报写入输出队列,UDP逐个将数据报取出,加上UDP首部后封装为UDP数据报交付给网络层;
而到达信宿的数据报将放在与该数据报的目的端口号对应的输入队列中。
输入输出队列都可能溢出,如果输出队列溢出,操作系统将要求应用进程降低数据报发送的速度,而如果输入队列溢出,应用进程就丢弃该数据报,并请求向发送进程发送“端口不可达”报文。
域名系统(Domain Name System, DNS)是一种工作在TCP/IP的应用层的分布式网络目录服务系统,它通过一个遍布全球的分布式数据库,提供主机名称和IP地址之间的映射。
域名解析
递归解析
当一个DNS服务器接收到请求后,如果它本身就是授权服务器,则查询其所存储的域名空间信息并给出响应;
如果它不是授权服务器,则将请求转发给另一个DNS服务器;
直到请求最终被响应后,再逐级将响应信息返回给请求客户机。
反复解析
当一个DNS服务器接收到请求后,如果能给出解析结果则向客户机返回最终结果,否则应向客户提供其认为能够给出解析结果的DNS服务器的IP地址。
客户机收到该IP地址后再向该IP地址对应的DNS服务器发出请求,直到获得最终结果。
DNS报文
包括请求报文和响应报文
12字节报文首部和4个长度可变的字段组成
一般采用UDP传输,超过512字节采用TCP传输
UDP和TCP中端口号均为53
应用Telnet协议能够把本地用户所使用的计算机变成远程主机系统的一个仿真终端,即实现对远程主机系统的远程登录,使本地用户可以访问远程资源。
工作在应用层的Telnet以TCP为传输层协议,使用的端口号是23,可在本地主机和远程主机之间以半双工方式进行通信。
工作原理
Telnet远程登录服务可分为4个基本过程
依据远程主机的IP地址或域名以及端口号,本地系统与远程主机系统建立TCP连接;
本地系统终端上接收的用户信息以NVT(网络虚拟终端)格式传送到远程主机系统,并在远程主机系统中将其转换为远程主机系统的数据格式;
远程主机系统的响应信息以NVT格式返回给本地主机系统,并在本地主机系统转换为本地主机系统的数据格式,交付给本地主机系统终端;
最后,本地主机系统终端对远程主机进行撤销连接,即撤销一个TCP连接
FTP属于TCP/IP协议族的应用层协议,其传输层使用的是TCP,基于客户机/服务器模式工作,为数据传输提供了可靠保证。
FTP工作原理
FTP的工作过程其实就是客户机程序根据用户需要发送命令,服务器程序响应命令的过程。
需要建立两种类型的连接:控制连接和数据连接。控制连接传送客户机程序发出的命令和服务器返回的响应信息,而数据连接则负责传输文件的内容。
启动FTP服务器:由于FTP采用了客户机/服务器工作模式,因此在创建FTP会话之前,首先必须启动FTP服务器,并使其处于等待客户机程序的FTP请求状态。
打开FTP并建立控制连接:启动FTP客户机程序,并向FTP服务器的21端口(控制连接端口)发出主动连接的请求,以期获得FTP服务器的相应权限。服务器响应请求后便在用户协议解释器和服务器协议解释器之间建立了一条TCP连接。
建立数据连接并进行文件传输:用户通过客户机程序输入FTP命令,服务器接收命令。如果命令正确且需要进行文件传输,服务器使用TCP20端口在双方之间建立另一条TCP连接,即数据连接,并通过该连接进行文件传输。当本次命令的文件传输完毕,关闭该数据连接。
关闭FTP:用户执行完其所需的FTP命令后,发出退出FTP命令,控制连接关闭,本次FTP服务结束。
万维网的工作过程
用户确定要访问网页的URL,并将其输入到浏览器的地址栏中。
浏览器向DNS服务器发出请求,获取Web服务器域名所对应的IP地址。
浏览器向指定IP地址的Web服务器发出与端口80建立一条TCP连接的请求。80端口是Web服务器提供Web服务的端口。
在得到Web服务器确认并且TCP连接建立成功后,浏览器再向Web服务器发出一条请求传输网页的HTTP命令。
当Web服务器收到请求后,向浏览器发送其所需的网页文件。
网页文件发送完成后,由Web服务器主动关闭TCP连接。至此,HTTP的工作过程结束。
浏览器显示所收到的网页文件。如果网页文件中包含图片等信息,还要再次与Web服务器建立TCP连接下载相应图片信息等。
HTTP工作原理
首先客户机程序创建一个套接字,同时向服务器发出TCP连接请求,并通过服务器的确认建立TCP连接。
客户机程序根据需要利用TCP连接向服务器发送相应的请求命令。HTTP服务器也可以由其他类型的网关充当代理服务器,这样,HTTP便可以允许用户访问其他因特网协议,如SMTP、FTP、Gopher等。
服务器接收到客户机程序的请求命令后进行相应的处理,然后将处理结果以响应消息的形式通过TCP连接返回给客户机程序。
完成本次请求/应答后,客户机程序和服务器程序都可以通过关闭套接字来结束本次的TCP连接
请求报文格式
信息首部
User-Agent:产生请求的浏览器类型;
Accept:客户端可识别的响应内容类型列表;星号 “* ” 用于按范围将类型分组,用 “ / ” 指示可接受全部类型,用“type/*”指示可接受type类型的所有子类型;
Accept-Language:客户端可接受的自然语言;
Accept-Encoding:客户端可接受的编码压缩格式;pAccept-Charset:可接受的应答的字符集;
Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机;
Connection:连接方式(close或keepalive);
Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie
响应报文格式
状态码:响应类型,3位10进制数组成
1xx:表示服务器已接收了客户端请求,客户端可继续发送请求;
2xx:表示服务器已成功接收到请求并进行处理;
3xx:表示服务器要求客户端重定向;
4xx:表示客户端的请求有非法内容;
5xx:表示服务器未能正常处理客户端的请求而出现意外错误
需要发送者邮件代理、发送者邮件服务器、接收者邮件服务器,接收者代理4个程序的参与。
在邮件传输过程中,起关键作用的是两个邮件传输协议:SMTP和POP3。
SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议的缩写,是建立在传输层协议TCP上的可靠高效的邮件传输协议,采用请求/应答方式来实现。整个工作过程包括连接建立、邮件传送和连接释放3个阶段。
连接建立:SMTP是基于客户机/服务器模式工作的,邮件服务器在TCP的25端口守候客户机的请求。当需要发送邮件时,发送主机的SMTP客户机向连接主机的SMTP服务器的TCP端口25发出建立连接请求,得到服务器确认后连接建立。此后,SMTP客户机再次向SMTP服务器发送HELO命令,并附上发送方主机名以确认SMTP服务器是否已经准备好接收邮件。如果SMTP服务器应答“250 XXXX”表示已准备好接收邮件。
邮件传送
SMTP客户机得到SMTP服务器的肯定回答后,随即可利用MAIL命令告诉SMTP服务器新的邮件发送操作已经开始。如果SMTP服务器已经准备好接收邮件,则以250应答代码应答。
其后SMTP客户机可以用RCPT命令发送邮件接收者的目的地址,以便SMTP服务器把邮件内容最终传送到收件人的邮箱中。如果命令被接收,则返回250应答码。
然后SMTP客户机可利用DATA命令告诉SMTP服务器下面将要发送邮件内容。如果命令被接收,则SMTP服务器以354应答码应答,并认定以下的各行都是邮件内容。发送完毕后,再发送
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。