网络协议五层模型

最近把大学时的计算机网络教程又拿出来啃了一遍,感觉好多知识都还给老师了,所以还是得时常看看,温故而知新,写篇读书笔记记录一下。由于OSI七层模型划分的过于细致,实际应用一般不会划分这么细,所以这里只讨论五层模型。

1.物理层

物理层考虑的是如何传输比特流,定义硬件标准等等。

调制解调

将数字信号转化为模拟信号,将模拟信号还原为数字信号,此过程为调制解调。(调制解调器的作用)

ADSL,FTTX,无线接入技术

互联网发展的早期,用传统电话线来进行网络接入,低频段用来电话语音数据传输,高频段进行网络数据传输,互不影响。

FTTX只要指的是光纤接入技术。

前几种都是有线接入,无线接入技术主要用于移动设备。包括现在的物联网等等。

2.数据链路层

传输数据帧.将上层数据封装成帧,差错检测,超时重传。不过超时重传并不是必须的。PPP协议(点对点传输协议)是数据链路层应用最广泛的协议。对上层提供不可靠的服务。

PPP协议特点

1.简单 2.封装成帧 3.透明性 4.多种网络层协议和多种类型链路 5.差错检测 6.检测连接状态 7.最大传送单元 8.网络层地址协商

CRC以及FCS

循环冗余检验CRC是一种检错方法,帧检验序列FCS是添加在数据后面的冗余码

MTU

最大传输单元,帧的数据部分不能超过MTU数值,不同协议的MTU数值也不一样。

以太网

以太网是目前主流的局域网标准,提供不可靠的交付,注意PPP协议是工作在广域网的,不是工作在这里的。

以太网的结构有总线型,星型(配合集线器)。星型结构在逻辑上还是总线型。在同一时刻之多只允许一个站点发送数据。

CSMA/CD协议

载波监听多点接入/碰撞检测的缩写。协议要点:
1.多点接入 2.载波监听 3.碰撞检测
CSMA/CD协议是半双工通信,只能进行双向交替通信。

网卡

网络接口卡(Network Interface Card),目前的计算机主板上都已经嵌入了网卡,所以叫适配器更合适一点。

适配器上面有处理器和存储器(包括RAM和ROM),适配器和局域网之间的通信是以串行传输方式进行的,而适配器和计算机主板上的IO总线是以并行传输方式进行的。适配器的一个重要功能就是串行和并行的转换。

适配器收到正确的帧之后使用中断通知计算机并交付给协议栈中的网络层。当要发送IP数据报时,由协议栈把IP数据报向下交给适配器,组装成帧后发送到局域网。

以太网的MAC层
MAC地址

MAC地址信息在适配器的ROM中,IP地址在计算机的存储器中。
MAC地址48位,全球唯一。RA是局域网全球地址的法定管理机构。

MAC帧

分类:1.单播 2.广播 3.多播
适配器可以以混杂方式进行工作,可以监听到以太网上的所有帧,黑客经常这么搞。

MAC帧和PPP帧不一样,不要混为一谈,MAC帧只是工作在以太网之中,而PPP帧工作在广域网上,所以PPP是有帧结束定界符的。

MAC帧的长度为64-1518字节之间。

扩展的以太网

在物理层扩展以太网

通过光纤,集线器等扩展以太网的规模

在数据链路层扩展以太网
网桥

网桥工作在数据链路层,集线器工作在物理层。网桥根据MAC帧的目的地址对帧进行转发和过滤,网桥收到帧后不是向所有的接口发送此帧,而是先检查此帧的目的MAC地址,然后在确定发到哪个接口,或者将其丢弃。

网桥经历了一代又一代的更新,现在我们使用的为以太网交换机,其本质为一个多接口的网桥。其内部的帧转发表也是通过自学习算法逐渐建立起来的。

VLAN(虚拟局域网)

在一个局域网中逻辑性的划分多个虚拟局域网,虚拟局域网在逻辑上相互独立,交换机不会将一个虚拟局域网的广播数据发送到其他的其它的虚拟局域网中去。

注意交换机是星型结构,每个主机和交换机直连,所以交换机可以精确控制每一台主机发出的帧数据。不同于总线结构,总线上的所有主机都会被动收到其它主机发出的帧数据。

高速以太网

高速以太网可以全双工方式工作,所以CSMA/CD协议对其不起效果。不过在半双工方式工作的时候,仍然要使用CSMA/CD协议。

PPPoE(PPP over Ethernet)

在以太网上运行PPP。

当用户利用ADSL进行宽带上网时,PC到发出帧经过ADSL之后,就转换为ADSL使用的PPP帧,这种方式不能称为以太网上网,而是利用电话线接入到因特网。

无线局域网(WLAN)

在MAC层使用CSMA/CA协议以及停止等待协议

对于PPP和MAC层的一些看法

PPP协议是点对点传输,所以PPPoE应该是用MAC帧封装了ppp帧,这样才能在以太网上面传输。

路由器之间进行通信,如果要经过以太网,则必然要使用ARP,当然也会用MAC帧,若路由器直连,之间不经过以太网,则不会用到MAC帧。

3.网络层

网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。

IP协议

IP协议是TCP/IP体系最主要的协议之一。与IP配套使用的还有以下四个协议:

  • 地址解析协议ARP
  • 你地址解析协议RARP
  • 网际控制报文协议ICMP
  • 网际组管理协议IGMP

物理层使用的中间设备叫转发器,如集线器
链路层使用的叫网桥或者桥接器,如交换机
网络层使用的中间设备是路由器。
网络层以上的叫网关,用网关连接两个不兼容的系统需要在高层进行协议的转换。

IP地址

IP地址由网络号和主机号组成。根据网络号可以对IP地址进行分类。

IP地址的划分
  • A类 0开头 0-127
  • B类 10开头 128-191
  • C类 110开头 192-223
  • D类 1110开头
  • E类 11110开头

A类,B类和C类都是单播地址,D类为多播地址,E类保留为以后用。

不过现在广泛使用无分类IP地址(CIDR)进行路由选择,IP地址分类基本已经成为了历史。

IP地址中的网络号全0表示本网络。

网络号为127保留为本地软件环回测试本主机的进程之间的通信只用。若主机发送为127开头的数据包,则不会把数据报发送到任何网络。

全0的主机号表示当前主机所在的网络地址,全1的主机号表示该网络上的所有主机。

地址解析协议ARP

已经知道了一个机器的IP地址,需要找出其相应的物理地址。就需要使用到ARP协议。

APR使用MAC帧进行封装,以广播的方式在以太网上工作,每一个主机都设有一个ARP高速缓存。

IP数据报的格式

首部:固定部分20个字节,可选字段长度可变,最长不超过40个字节。不过长度必须是4字节的整数倍,不足的部分用全0填充。

首部组成
  1. 版本 4位
  2. 首部长度 4位
  3. 区分服务 8位
  4. 总长度 16位
  5. 标识 16位
  6. 标志 3位
  7. 片偏移 13位
  8. 生存时间 8位
  9. 协议 8位
  10. 首部检验和 16位
  11. 原地址 32位
  12. 目的地址 32位
  13. 可变部分 长度不定

划分子网

从两级IP地址到三级IP地址。为了解决IP地址利用率低,减少路由表的规模,以及解决两级IP不够灵活的问题。

具体做法是将主机号的前几位作为子网号,可以将一个大型网络划分为多个子网号。

子网掩码

子网掩码是一个网络或一个子网的重要属性,IP地址与其逐位相与,便可得出网络号。例如A类地址默认的子网掩码为255.0.0.0

子网网络号不能为全1或者全0,但随着CIDR的使用,现在全1和全0的子网号也可以使用了。

划分子网增加了灵活性,但是却减少了能够连接在网络上的主机总数。

使用子网划分后,路由表必须包含目的网络地址、子网掩码和下一跳地址(接口0,接口1…)。

无分类编址CIDR(构造超网)

CIDR取消了传统的A类,B类,C类以及划分子网的概念,因而可以更有效的利用IPv4的网络空间。CIDR将IP地址分为两部分,网络前缀和主机号。

CIDR使用斜线记法,或称为CIDR记法。例如:128.14.35.7/20,斜线后的数字表示网络前缀的位数。

全0和全1的主机号一般并不使用。

CIDR也使用地址掩码,也可以进行子网划分。不过子网的网络前缀肯定是比整个组织的网络前缀长的。

由于一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络,这种地址的聚合称为路由聚合,也称为构成超网。使用路由聚合,使得路由表的复杂度大大降低。(因为我们可以将多个长前缀的网络地址块聚合为一个短前缀地址块,当然,这几个长前缀地址块要有相同的短地址前缀)

使用CIDR时,路由器查找路由表进行匹配时,当使用最长前缀匹配规则。

网际控制报文协议ICMP

ICMP允许主机或者路由器报告差错情况和提供有关异常情况的报告。ICMP报文使用IP数据报进行封装。

ICMP报文分为ICMP差错报告报文和ICMP询问报文。

ICMP差错报告报文

分类:

  1. 终点不可达
  2. 源点抑制
  3. 时间超过
  4. 参数问题
  5. 改变路由(重定向)
ICMP询问报文
  1. 回送请求和回答
  2. 时间戳请求和回答
ICMP的应用

ping命令和traceroute。

ping命令的原理主要是利用询问报文回送请求和回送回答报文。

traceroute是利用差错报告报文,主要原理是利用TTL值逐渐递增,经过的路由器逐个回送时间超过差错报告报文,直至返回终点不可达。

因特网的路由选择协议

内部网关协议RIP

路由信息协议RIP是基于距离向量的路由选择协议,每一跳距离加1。
特点:

  1. 仅和相邻路由器交换信息。
  2. 交换的是自己的路由表,全部信息。
  3. 固定间隔交换

RIP协议可以收敛,过程较快。不过目的是找出到每个网络的最短距离。

优点:实现简单,开销较小。

缺点:当网络出现故障时,要经过较长时间才能将此信息传送到所有的路由器。路由的最大跳数不能超过15,16时即不可达。所以RIP只适用于小型互联网。

内部网关协议OSPF

开放最短路径优先OSPF,使用最短路径算法SPF,每个路由器都有一个链路状态数据库,这个数据库实际上是全网的拓扑机构图,然后通过最短路径算法生成路由表,

这个数据库一开始的建立是通过洪泛法进行的,既路由器向所有输出端口发送信息,收到信息的路由器右再次转发给其它路由器,最终所有路由器都会收到信息。

OSPF可以将一个自治系统划分为若干个更小的范围,叫做区域,区域可以将洪泛法交换链路状态信息的范围局限于每一个区域,而不是整个自治系统,减少了整个网络上的通信量。区域之间通过区域边界路由器进行通信。自治系统之间的通信通过自治系统边界路由器进行。

优点:链路的代价可以自定义。相同代价的链路可以负载平衡。鉴别的功能,保证了仅在可信赖的路由器之间交换链路状态信息。支持子网划分和CIDR,链路状态更新及时。最重要的是可以有层次的划分,使得每一个区域交换路由信息的通信量大大减小。

OSPF五种类型
  1. 问候分组
  2. 数据库描述分组
  3. 链路状态请求
  4. 链路状态更新
  5. 链路状态确认
外部网关协议BGP

BGP用于AS(自治系统)之间的路由,由于因特网的规模太大,所以不能使用OSPF等协议,而且AS之间的路由选择必须考虑有关策略。

BGP力求寻找比较好的路由,而并非最佳路由,采用路径向量协议。

每个AS管理员需要选择至少一个路由器作为该AS的”BGP发言人”,一般选择BGP的边界路由器。

BGP发言人之间通过TCP连接建立BGP会话,利用BGP会话交换路由信息。每一个BGP发言人不仅要运行BGP协议,还要运行本AS的内部网关协议。

BGP协议交换路由信息的节点数量级是自治系统的量级,这比自治系统中的网络数少很多。因此路由选择不会过于复杂。

BGP协议可以有效防止兜圈子,BGP支持CIDR,因此路由表中包括目的前缀,下一跳路由器,以及到达该网络要经过的各个自治系统序列。如果发现自己在这条路径中,就不能采用这条路径。

BGP报文类型
  1. OPEN
  2. UPDATE
  3. KEEPALIVE
  4. NOTIFICATION
路由器的构成

路由器由路由选择部分(控制部分)和分组转发部分构成。

路由控制部分根据所选的协议构造出路由表,并和相邻路由器交换路由信息而不断地更新和维护路由表。

分组转发部分由交换结构,一组输入端口和一组输出端口(这里的端口就是硬件接口)。

路由器有数据缓冲区,来不及转发的数据报会进入缓存队列,不过若是缓存区满了,后来的数据报只能被丢弃。

IP多播

广域网的多播还没办法完全实现,需要多播路由器的支持。需要用到IGMP(网际组管理协议)和多播路由协议。

IP多播使用D类IP地址。

局域网的硬件多播。以太网的多播地址范围是从01-00-5E-00-00-00到01-00-5E-7F-FF-FF.

本地地址和虚拟专用网VPN

由于IP地址的紧缺,不可能做到IP和主机一一对应,而且,一个机构内部的主机很多时候要和本机构内的其它主机进行通信。如果使用TCP/IP协议,那么这个时候内部的主机的IP地址可以由本机构分配,这种仅在本机构有效的IP地址称为本地地址。

为了避免IP地址的二义性问题,RFC 1918指定了一些专用地址,在因特网中的所有路由器,对目的地址为专用地址的数据报一律不进行转发。

专用地址为:

  1. 10.0.0.0-10.255.255.255(或记为10/8)
  2. 172.16.0.0-172.31.255.255(或记为172.16/12)
  3. 192.168.0.0-192.168.255.255(或记为192.168/16)

本地地址的主机访问因特网需要用到NAT或NAPT映射技术。

VPN又被称为内联网,VPN技术可以使得同一个机构,不同地点的部门使用共同的网络环境。VPN将因特网作为不同地点相互交流的通信载体,使用者需要先登入机构的VPN服务器,通过认证,建立加密隧道,然后才能进行内部数据访问。

IPv6

IPv6是解决IP地址耗尽的根本措施。

IPv6的特点
  1. 更大的地址空间(128位地址)
  2. 灵活的首部格式
  3. 改进的选项
  4. 支持即插即用
  5. 支持资源的预分配
  6. IPv6首部采用8字节对齐
  7. 目的地址可以是单播多播和任播
  8. 使用冒号十六进制记法

IPv6的过渡可以使用双协议栈或隧道技术。

4.传输层

传输层向应用进程之间提供端到端的逻辑通信。

端口号

传输层使用协议端口号对通信进程进行区分。端口用一个16位端口号进行标志,最多可允许65535个端口号。

熟知端口

0-1023.由IANA负责分配给一些常用的应用层程序固定使用。例如:

FTP:21,TELENT:23,SMTP:25,DNS:53,TFTP:69,HTTP:80,SNMP:161,SNMP:162,HTTPS:443.

登记端口

1024-49151,IANA不分配也不控制,但是可以在IANA注册登记,以防重复使用。

动态端口

49151-65535,用户自己发起通信时可以临时使用,没有什么限制。

用户数据报协议UDP

UDP的特点:
  1. 无连接
  2. 最大努力交付
  3. 没有拥塞控制
  4. 面向报文
  5. 支持一对一,一对多,多对一,多对多的交互通信
  6. 8个字节的首部开销
UDP首部格式
  1. 源端口
  2. 目的端口
  3. 长度
  4. 检验和

每个字段都是两个字节。UDP的差错检验要加入12个字节的伪首部,而且在检验时,是将首部和数据部分一起都检验的。

传输控制协议TCP

TCP提供全双工的可靠交付服务,和UDP的最大区别是:TCP是面向连接的,而UDP是无连接的。TCP还有流量控制和拥塞控制机制。

特点
  1. 面向连接
  2. 点对点
  3. 可靠交付
  4. 全双工通信
  5. 面向字节流
报文结构
  1. 源端口和目的端口 各2个字节
  2. 序号 4字节
  3. 确认号 4字节
  4. 数据偏移 4位 指出TCP报文的数据部分距离TCP报文起始处有多远,这里的单位是4字节的倍数,所有数据偏移最大长度为60字节,这是TCP报文首部的最大长度
  5. 保留 6位
  6. 标志位 分为紧急URG,确认ACK,推送PSH,复位RST,同步SYN,终止FIN 这6种标志各占1位
  7. 窗口 2字节
  8. 检验和 2字节 和UDP检验方式类似
  9. 选项 长度可变

TCP报文首部20字节固定长度,40字节的可变长度,最大为60字节。

MSS:最大报文段长度,默认是536字节,所以TCP默认最大556字节。MSS=TCP报文长度-TCP首部长度。

TCP的可靠数据传输
数据编号与确认

TCP将应用层交下来的长报文看成是一个个字节组成的数据流,并使每一个字节对应于一个序号。在连接建立时,双方TCP要各自确定初始序号。TCP报文首部中的序号字段数值标识该报文段中紧接着首部后面的第一个数据字节的序号。

TCP使用积累确认,即确认是对所有按序接收到的数据的确认。接收方返回的确认号是已按序收到的数据的最高序号加一。也就是说确认号表示接收方期望下次收到的数据中的第一个数据字节序号。

确认信息可以使用捎带确认,但是不能超过0.5s.

以字节为单位的滑动窗口

TCP采用滑动窗口协议来提高报文段的传输效率。

TCP发送端维护一个发送窗口,落入发送窗口的数据可以被发送,窗口外左侧是已发送并受到确认的字节。窗口外右侧是还不能被发送的字节,窗口收到确认则向右移动,知道左侧边缘正好包含确认号的字节。

TCP的流量控制和拥塞控制会根据情况动态的调整发送窗口的上限值,从而控制发送数据的平均速率。

超时重传时间的选择

RTT(Round-Trip Time):往返时延
RTTs:平均往返时延
RTO(Retransmission Time-Out):计时器设置的超时重传时间

超时重传时间的计算可参考RFC 2988.

快速重传

发送端一脸受到三个重复的确认时,就应该立即重传丢失的报文段,而不必等待重传计时器超时。

流量控制

流量控制服务用于解决因发送方发送数据太快,而导致接收方来不及接收,以至于接收方缓存溢出的问题。

TCP接收方要维持一个接收窗口(rwnd, receiver window)的变量,其值不能大于接收缓存的大小。

TCP报文首部的窗口字段写入的字段就是当前接收方的接收窗口大小。注意,只有ACK置为1时确认号字段才有意义。

发送方要根据接收方回传的窗口大小动态的调整自己的发送窗口大小。

TCP连接管理

这里要注意,SYN和FIN都要消耗一个序列号,ACK报文不携带数据的情况下,ACK不消耗序列号,但若是携带数据的话,则是要消耗序列号的。基本上现实的TCP通信中,除了SYN,发送TCP报文时都会带上ACK标志的,可以提高信道的利用率。

TCP的三次握手
  1. 客户端发送 SYN=1,seq=x 到服务端
  2. 服务端返回 SYN=1,ACK=1,seq=y,ack=x+1 到客户端
  3. 客户端发送 ACK=1,seq=x+1,ack=y+1 到服务端

这里的seq表示序列号,ack表示确认号。

三次握手后,连接建立。

TCP的四次挥手
  1. 客户端发送 FIN=1,seq=u 到服务端
  2. 服务端返回 ACK=1,seq=v,ack=u+1 到客户端,现在已经进入了半关闭状态,不过这只是表示客户端告诉服务器,我已经没什么要发给你了,但是你要是还有什么要发给我的,我还可以接收(这种情况极少,基本上不会再发数据了)。
  3. 服务端发送 FIN=1,seq=v,ack=u+1 到客户端
  4. 客户端返回 ACK=1,seq=u+1,ack=v+1 到服务端

四次挥手后,连接断开。

TCB:传输控制程序块(Transmission Control Block),它存储了每一个连接中的一些重要信息,如TCP连接表,到发送和接收缓存的指针,到重传队列的指针,当前的发送和接收序号等等。

拥塞控制原理

网络传输的带宽是有限的,当网络中出现太多的分组时,网络性能会开始下降,这种情况称为拥塞,而当拥塞达到一定程度,甚至会造成死锁,网络传输的吞吐量为0.

所谓拥塞控制就是防止过多的数据注入到网络中,避免路由器或者链路过载。

拥塞控制分为开环控制和闭环控制,开环控制试图用良好的设计来解决问题,当系统运行起来后,不需要中途修正,也就是说不需要考虑网络的当前状态。

鉴于互联网的复杂性,开环控制基本上不可能实现,所以还是说说闭环控制吧。

闭环控制算法又分为显式反馈算法和隐式反馈算法。显示就是利用ICMP类似的机制来实现,不过拥堵已经发生,如果再使用这种机制,无异于火上浇油。所以TCP用的是隐式反馈算法。

TCP的拥塞控制

TCP的发送方维持一个拥塞窗口(cwnd, congestion window)的变量.拥塞窗口取决于网络的拥塞程度,动态变化。TCP发送方确定发送速率时,既要根据接收方的接受能力,又要考虑不使网络发生拥塞。所以:

发送窗口的上限值=Min[rwnd,cwnd]

TCP发送方通过分组丢失来判断网络是否发生了拥堵,所以,当重传计数器超时或者接收到三个重复确认时,TCP的发送方就认为网络发生了拥堵。

TCP发送方采用慢开始(slow-start) , 拥塞避免(congestion avoidance) , 快速重传(fast retransmit)快速恢复(fast recovery) 算法来改变发送速率。

慢开始和拥塞避免

由小到大逐渐增大发送发的拥塞窗口数值,可将拥塞窗口数值设置为1个MSS的数值,每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个MSS的数值。

由此可见,慢开始每过一个RTT,发送速率几乎增加一倍,所以这个“慢”,其实指的是一开始发送速率很慢,并不是指拥塞窗口的增长速率慢。

当慢开始的cwnd达到慢开始门限ssthresh时,停止慢开始算法而使用拥塞避免算法。

具体做法是拥塞避免算法每经过大约一个RTT时间就将cwnd增加一个RSS大小。实际做法是,每收到一个确认,就将cwnd增加MSS*(MSS/cwnd).这样cwnd按线性缓慢增长,比慢开始慢的多。

无论是在慢开始阶段还是拥塞避免阶段,只要发现出现网络拥堵,就立即将cwnd置为1,并执行慢开始算法。同时将ssthresh设置为出现拥堵时的发送窗口的一半。

快速恢复

由于重传计数器超时和收到三个重复的ACK时,当前的网络拥堵状况是不一样的,收到三个重复的ACK意味着当前的网络并不是特别拥堵。所以这里应该使用快速恢复算法

快速恢复算法将ssthresh置为发送窗口的一半,这一点和慢启动一样,不同的是并不将cwnd直接置为1,而是从ssthresh开始执行拥塞避免算法。

5.应用层

域名系统DNS

将域名和ip地址进行映射。DNS除了这个功能外,还提供主机别名,负载分配,反向域名解析等功能。

域名结构

xxx.三级域名.二级域名.顶级域名

域名服务器

根域名服务器,顶级域名服务器,权限域名服务器,本地域名服务器

域名解析过程分为递归查询和迭代查询。

统一资源定位符URL

<协议>://<主机>:<端口>/<路径>

超文本传输协议HTTP

HTTP使用TCP作为传输层协议,是一个无状态协议。

非持续连接与持续连接

HTTP/1.0采用非持续连接方式,每次请求对应一个TCP连接。

HTTP/1.1使用持续连接方式,同一个客户和该服务器可以在这条连接上传送后续的HTTP请求报文和响应报文。

HTTP/1.1还可以使用流水线方式工作,即客户可以连续发送多个请求报文,这样一个接一个的请求报文到达服务器后,服务器就发回一个接一个的报文响应,使TCP连接中的空闲时间减少,提高了网络传输的效率。

代理服务器

代理服务器又称为万维网缓存,代理服务器把最近的一些请求和响应暂存在本地磁盘中,当新请求到来时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应。例如校园网解决网络拥堵和时延过高的问题。

HTTP报文结构

请求报文–从客户端向服务器发送请求报文。
响应报文–从服务端到客户的回答。

  1. 请求行/状态行:用于区分是请求报文还是响应报文。在请求报文中第一行是请求行,在响应报文中第一行是状态行。
  2. 首部行:用来说明浏览器、服务器或报文主体的一些信息。
  3. 实体主体:请求报文一般没有这个字段,有些响应报文中可能没有这个字段。

请求行只有三个内容:方法,请求资源URL以及HTTP的版本。

方法有:OPTION,GET,HEAD,POST,PUT,DELETE,TRACE,CONNECT

状态行包括三项内容:HTTP的版本,状态码以及解释状态码的简单短语。

状态码:1xx表示通知信息,2xx表示成功,3xx表示重定向,4xx表示客户的差错,5xx表示服务器的差错。

由于HTTP是无状态的协议,所以服务器为了辨识用户,增加了Cookie机制,Cookie由服务端返回,浏览器将其存在本地。下次再次进行请求时,会带上Cookie请求,服务器通过Cookie判断当前用户的身份。

万维网的文档
超文本标记语言HTML

静态文档

动态文档

动态文档技术主要有:CGI,PHP,JSP,ASP

活动文档

活动文档技术主要有: java applet,javaScript,ActionScript等

目前万维网上的文档都是这三种文档的混合体。

电子邮件(e-mail)
简单邮件传送协议SMTP

用于从用户代理到邮件服务器以及在邮件服务器之间的邮件传送。

邮件读取协议POP3和IMAP

用户代理从邮件服务器读取邮件时要用到这两个协议。IMAP比POP3复杂得多,不过IMAP提供的功能也比较多,IMAP允许用户管理邮件服务器上面的邮件。

通用因特网邮件扩充MIME

由于SMTP限于传送7位的ASCII码,不能传送可执行文件或其他二进制对象(因为以解读ASCII码的形式解读二进制文件,会产生大量的特殊字符)。

MIME没有改动或者取代SMTP,只是一个辅助协议。MIME将非ASCII码数据转换为ASCII码数据,交给SMTP传送。在接收方再把收到的数据转换为原来的ASCII码数据。

MIME新增5个首部:

  1. MIME-Version
  2. Content-Description
  3. Content-Id
  4. Content-Transfer-Encoding
  5. Content-Type

内容传送编码:

quoted-printable : 适用于少量的非ASCII码。对于每个字节,如果是可打印的ASCII码,除了’=’之外,都不改变。如果不能打印,则将每个字节的二进制代码用两个十六进制数字表示,然后在前面再加上一个等号 ‘=’。如果全是不可打印的字符的话,则编码的开销达到200%。也就是32位的数据编码后会达到96位的长度。如果全是可打印的二进制码的话,则开销为0。

Base64:将二进制码划分为一个个24位长的单元,然后将每一个24位单元划分为4个6位组,每个6位组按以下方式转换为ASCII码。0-63分别对应26个大写字母,26个小写字母,0-9,+代表62,/代表63。用 == 表示末尾只有8位,用 = 表示末尾是16位。因为如果结尾的长度不足24位,需要用全0填充至24位。所以需要用到 == 和 = 来说明具体是多少位。

内容类型:

Text,Image,Audio,Video,Application,Message,multipart

子类型:

plain,richtext,gif,jpeg,basic,mpeg,octet-stream,partial,external-body,mixed,alternative,parallel,digest.

文件传输协议FTP

用于文件传输。。。

动态主机配置协议DHCP

一台计算机连接到因特网需要配置以下参数:

  1. IP地址
  2. 子网掩码
  3. 默认路由器的IP地址
  4. 域名服务器的IP地址

动态主机配置协议DHCP提供了一种机制,称为即插即用联网。允许一台计算机加入新的网络和获取IP地址而不用手工参与。

文章目录
  1. 1. 1.物理层
    1. 1.1. 调制解调
    2. 1.2. ADSL,FTTX,无线接入技术
  2. 2. 2.数据链路层
    1. 2.1. PPP协议特点
    2. 2.2. CRC以及FCS
      1. 2.2.1. MTU
    3. 2.3. 以太网
      1. 2.3.1. CSMA/CD协议
      2. 2.3.2. 网卡
      3. 2.3.3. 以太网的MAC层
        1. 2.3.3.1. MAC地址
        2. 2.3.3.2. MAC帧
    4. 2.4. 扩展的以太网
      1. 2.4.1. 在物理层扩展以太网
      2. 2.4.2. 在数据链路层扩展以太网
        1. 2.4.2.1. 网桥
        2. 2.4.2.2. VLAN(虚拟局域网)
    5. 2.5. 高速以太网
    6. 2.6. PPPoE(PPP over Ethernet)
    7. 2.7. 无线局域网(WLAN)
    8. 2.8. 对于PPP和MAC层的一些看法
  3. 3. 3.网络层
    1. 3.1. IP协议
      1. 3.1.1. IP地址
        1. 3.1.1.1. IP地址的划分
    2. 3.2. 地址解析协议ARP
    3. 3.3. IP数据报的格式
      1. 3.3.1. 首部组成
    4. 3.4. 划分子网
      1. 3.4.1. 子网掩码
    5. 3.5. 无分类编址CIDR(构造超网)
    6. 3.6. 网际控制报文协议ICMP
      1. 3.6.1. ICMP差错报告报文
      2. 3.6.2. ICMP询问报文
      3. 3.6.3. ICMP的应用
    7. 3.7. 因特网的路由选择协议
      1. 3.7.1. 内部网关协议RIP
      2. 3.7.2. 内部网关协议OSPF
        1. 3.7.2.1. OSPF五种类型
      3. 3.7.3. 外部网关协议BGP
        1. 3.7.3.1. BGP报文类型
      4. 3.7.4. 路由器的构成
    8. 3.8. IP多播
    9. 3.9. 本地地址和虚拟专用网VPN
    10. 3.10. IPv6
      1. 3.10.1. IPv6的特点
  4. 4. 4.传输层
    1. 4.1. 端口号
      1. 4.1.1. 熟知端口
      2. 4.1.2. 登记端口
      3. 4.1.3. 动态端口
    2. 4.2. 用户数据报协议UDP
      1. 4.2.1. UDP的特点:
      2. 4.2.2. UDP首部格式
    3. 4.3. 传输控制协议TCP
      1. 4.3.1. 特点
      2. 4.3.2. 报文结构
      3. 4.3.3. TCP的可靠数据传输
        1. 4.3.3.1. 数据编号与确认
        2. 4.3.3.2. 以字节为单位的滑动窗口
        3. 4.3.3.3. 超时重传时间的选择
        4. 4.3.3.4. 快速重传
      4. 4.3.4. 流量控制
      5. 4.3.5. TCP连接管理
        1. 4.3.5.1. TCP的三次握手
        2. 4.3.5.2. TCP的四次挥手
    4. 4.4. 拥塞控制原理
      1. 4.4.1. TCP的拥塞控制
        1. 4.4.1.1. 慢开始和拥塞避免
        2. 4.4.1.2. 快速恢复
  5. 5. 5.应用层
    1. 5.1. 域名系统DNS
      1. 5.1.1. 域名结构
      2. 5.1.2. 域名服务器
      3. 5.1.3. 统一资源定位符URL
      4. 5.1.4. 超文本传输协议HTTP
        1. 5.1.4.1. 非持续连接与持续连接
        2. 5.1.4.2. 代理服务器
        3. 5.1.4.3. HTTP报文结构
        4. 5.1.4.4. Cookie
      5. 5.1.5. 万维网的文档
        1. 5.1.5.1. 超文本标记语言HTML
        2. 5.1.5.2. 动态文档
        3. 5.1.5.3. 活动文档
      6. 5.1.6. 电子邮件(e-mail)
        1. 5.1.6.1. 简单邮件传送协议SMTP
        2. 5.1.6.2. 邮件读取协议POP3和IMAP
        3. 5.1.6.3. 通用因特网邮件扩充MIME
      7. 5.1.7. 文件传输协议FTP
      8. 5.1.8. 动态主机配置协议DHCP
|