Web开发笔记(一):http协议相关内容,C/S与B/S

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38214171/article/details/82914198

目录

HTTP技术架构

HTTP协议功能

工作原理

HTTP协议的主要组成部分

HTTP协议 Status

C/S与B/S的比较:

服务器与Web服务器的差别

浏览器与客户端的差别

浏览器与Web服务器的作用与关系

长连接与短连接

无状态协议

无状态与KeepAlive的关系

通过Socket通信看TCP与UDP的面向连接/面向非连接

扩展阅读

TCP/IP参考模型

IP数据报文报头格式

网络拓扑结构

CSMA/CD

存储转发交换

VLAN

特殊IP

子网掩码的作用

面向连接和面向无连接

参考链接:


HTTP技术架构

HTTP是一个客户端服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。(我们称这个客户端)叫用户代理(user agent)。应答的服务器上存储着(一些)资源,比如HTML文件和图像。(我们称)这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个中间层,比如代理,网关,或者隧道(tunnels)。尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层。 事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。

通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。

通过HTTP或者HTTPS协议请求的资源由统一资源标示符(Uniform Resource Identifiers)(或者,更准确一些,URLs)来标识。统一资源定位符的完整格式如下:

协议类型:[//[访问资源需要的凭证信息@]服务器地址[:端口号]][/资源层级UNIX文件路径]文件名[?查询][#片段ID]

HTTP协议功能

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议,是应用层协议。web开发技术是基于http协议的。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。

我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。

工作原理

一次HTTP操作称为一个事务,其工作过程可分为四步:

首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。

建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。

服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

HTTP协议的主要组成部分

http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。

http请求由三部分组成,分别是:请求行、消息报头、请求正文

HTTP协议 Status

常见状态代码说明:

C/S与B/S的比较:

B/S就是C/S的一种特殊形式。

服务器与Web服务器的差别

服务器指的是一个管理资源并为用户提供服务的计算机软件,通常分为文件服务器、数据库服务器和应用程序服务器。运行以上软件的计算机或计算机系统也被称为服务器。

中间件是服务器上负责解析http请求的一组应用程序,负责接收并解析http请求数据包,在服务器上找到数据包所请求的文件后,将其返回给客户端。

web服务器就是安装了中间件的服务器。

浏览器与客户端的差别

客户端:是一个应用程序,一般是接收服务端提供的服务,如QQ等应用

浏览器:浏览器是指可以显示网页服务器或者文件系统HTML文件内容,并让用户与这些文件交互的一种软件可以理解为解释器。

浏览器与Web服务器的作用与关系

浏览器基本功能:解释器

Web服务器基本功能:工程容器

长连接与短连接

长连接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。

短连接(short connnection)是相对于长连接而言的概念,指的是在数据传送过程中,只在需要发送数据时,才去建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。

长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。例如:数据库的连接用长连接,如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。

无状态协议

无状态协议,是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

优点:服务器不用为每个客户端连接分配内存来记忆大量状态,也不用在客户端失去连接时去清理内存,以更高效地去处理WEB业务

缺点:客户端的每次请求都需要携带相应参数,服务器需要处理这些参数

无状态与KeepAlive的关系

HTTP是一个请求<->响应模式的典型范例,即客户端向服务器发送一个请求信息,服务器来响应这个信息。在老的HTTP版本中,每个请求都将被创建一个新的客户端->服务器的连接,在这个连接上发送请求,然后接收请求。这样的模式有一个很大的优点就是,它很简单,很容易理解和编程实现;它也有一个很大的缺点就是,它效率很低,因此Keep-Alive被提出用来解决效率低的问题。

HTTP/1.0中,如果客户端浏览器支持Keep-Alive,那么就在HTTP请求头中添加一个字段 Connection: Keep-Alive,当服务器收到附带有Connection: Keep-Alive的请求时,它也会在响应头中添加一个同样的字段来使用Keep-Alive。这样一来,客户端和服务器之间的HTTP连接就会被保持,不会断开(超过Keep-Alive规定的时间,意外断电等情况除外),当客户端发送另外一个请求时,就使用这条已经建立的连接。

1、HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)

2、从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接

3、Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间

通过Socket通信看TCP与UDP的面向连接/面向非连接

 Socket通信采用了TCP/IP协议,在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户端/服务器端模式,即客户端向服务器端发出服务请求,服务器端接收到请求后,提供相应服务。客户端/服务器端模式的建立基于以下两点:首先,建立网络的起因是网络中软硬件资源、运算能力和信息不均等,需要共享,从而造就拥有众多资源的主机提供服务,资源较少的客户端请求服务这一非对等作用。其次,网间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区,因此需要一种机制为希望通信的进程间建立关系,为二者的数据交换提供同步,这就是基于客户端/服务器端模式的TCP/IP。

Socket的通信过程如下图所示:

Socket通信是基于TCP/IP通信协议进行通信的,TCP是面向连接的,所谓的面向连接是指在正式通信之前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了,对方拿起话筒才能相互通话。

       所以基于TCP/IP协议的Socket通信在上图中客户端有connect()请求连接,服务器端有listen()监听端口和accept()接受连接。如果是UDP协议,那么就不会有connet(),listen(),accept()这三个步骤了,因为UDP协议是面向非连接的,面向非连接是指在正式通信前不必与对方先建立连接,不管对方状态就直接发送。这与手机短信非常相似,在发短信的时候,只需要输入对方手机号就可以了,其他就不用去管了。

扩展阅读

TCP/IP参考模型

Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。

在TCP/IP参考模型中,去掉了OSI参考模型中的会话层和表示层(这两层的功能被合并到应用层实现)。同时将OSI参考模型中的数据链路层和物理层合并为主机到网络层。下面,分别介绍各层的主要功能。
  1、主机到网络层  
  实际上TCP/IP参考模型没有真正描述这一层的实现,只是要求能够提供给其上层-网络互连层一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其具体的实现方法将随着网络类型的不同而不同。  
  2、网络互连层  
  网络互连层是整个TCP/IP协议栈的核心。它的功能是把分组发往目标网络或主机。同时,为了尽快地发送分组,可能需要沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。  
  网络互连层定义了分组格式和协议,即IP协议(Internet Protocol)。  
  网络互连层除了需要完成路由的功能外,也可以完成将不同类型的网络(异构网)互连的任务。除此之外,网络互连层还需要完成拥塞控制的功能。  
  3、传输层  
  在TCP/IP模型中,传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议。即:传输控制协议TCP(transmission control protocol)和用户数据报协议UDP(user datagram protocol)。  
  TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。TCP协议还要处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方发送的大量数据。  
  UDP协议是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。  
  4、应用层  
  TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。  
  应用层面向不同的网络应用引入了不同的应用层协议。其中,有基于TCP协议的,如文件传输协议(File Transfer Protocol,FTP)、虚拟终端协议(TELNET)、超文本链接协议(Hyper Text Transfer Protocol,HTTP),也有基于UDP协议的。

IP数据报文报头格式

IP协议是TCP/IP协议族中最为核心的协议。它提供不可靠、无连接的服务,也即依赖其他层的协议进行差错控制。在局域网环境,IP协议往往被封装在以太网帧中传送。而所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中传送。

TCP/IP报文封装:

IP头部(报头)格式:

其中:  
  ●版本(Version)字段:占4比特。用来表明IP协议实现的版本号,当前一般为IPv4,即0100。  
  ●报头长度(Internet Header Length,IHL)字段:占4比特。是头部占32比特的数字,包括可选项。普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。此字段最大值为60字节。  
  ●服务类型(Type of Service ,TOS)字段:占8比特。其中前3比特为优先权子字段(Precedence,现已被忽略)。第8比特保留未用。第4至第7比特分别代表延迟、吞吐量、可靠性和花费。当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。这4比特的服务类型中只能置其中1比特为1。可以全为0,若全为0则表示一般服务。服务类型字段声明了数据报被网络系统传输时可以被怎样处理。例如:TELNET协议可能要求有最小的延迟,FTP协议(数据)可能要求有最大吞吐量,SNMP协议可能要求有最高可靠性,NNTP(Network News Transfer Protocol,网络新闻传输协议)可能要求最小费用,而ICMP协议可能无特殊要求(4比特全为0)。实际上,大部分主机会忽略这个字段,但一些动态路由协议如OSPF(Open Shortest Path First Protocol)、IS-IS(Intermediate System to Intermediate System Protocol)可以根据这些字段的值进行路由决策。  
  ●总长度字段:占16比特。指明整个数据报的长度(以字节为单位)。最大长度为65535字节。  
  ●标志字段:占16比特。用来唯一地标识主机发送的每一份数据报。通常每发一份报文,它的值会加1。  
  ●标志位字段:占3比特。标志一份数据报是否要求分段。  
  ●段偏移字段:占13比特。如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置。  
  ●生存期(TTL:Time to Live)字段:占8比特。用来设置数据报最多可以经过的路由器数。由发送数据的源主机设置,通常为32、64、128等。每经过一个路由器,其值减1,直到0时该数据报被丢弃。  
  ●协议字段:占8比特。指明IP层所封装的上层协议类型,如ICMP(1)、IGMP(2) 、TCP(6)、UDP(17)等。  
  ●头部校验和字段:占16比特。内容是根据IP头部计算得到的校验和码。计算方法是:对头部中每个16比特进行二进制反码求和。(和ICMP、IGMP、TCP、UDP不同,IP不对头部后的数据进行校验)。  
  ●源IP地址、目标IP地址字段:各占32比特。用来标明发送IP数据报文的源主机地址和接收IP报文的目标主机地址。  
  可选项字段:占32比特。用来定义一些任选项:如记录路径、时间戳等。这些选项很少被使用,同时并不是所有主机和路由器都支持这些选项。可选项字段的长度必须是32比特的整数倍,如果不足,必须填充0以达到此长度要求。 

网络拓扑结构

网络拓扑 (Topology) 结构是指用传输介质互连各种设备的物理布局。

1、星型拓扑结构

星型网络由中心节点和其它从节点组成,中心节点可直接与从节点通信,而从节点间必须通过中心节点才能通信。在星型网络中中心节点通常由一种称为集线器或交换机的设备充当,因此网络上的计算机之间是通过集线器或交换机来相互通信的,是目前局域网最常见的方式。

2、总线拓扑结构

总线型网络是一种比较简单的计算机网络结构,它采用一条称为公共总线的传输介质,将各计算机直接与总线连接,信息沿总线介质逐个节点广播传送。

3、环型网络拓扑结构

环型网络将计算机连成一个环。在环型网络中,每台计算机按位置不同有一个顺序编号。在环型网络中信号按计算机编号顺序以 “ 接力 ” 方式传输。若计算机 A 欲将数据传输给计算机 D 时,必须先传送给计算机 B ,计算机 B 收到信号后发现不是给自己的,于是再传给计算机 C ,这样直到传送到计算机 D 。

4、树型拓扑

树型拓扑可以认为是多级星型结构组成的,只不过这种多级星型结构自上而下呈三角形分布的,就像一颗树一样,最顶端的枝叶少些,中间的多些,而最下面的枝叶最多。各个节点对根的依赖性太大,如果根发生故障,则全网不能正常工作。

5、混合型拓扑

混合型拓扑是将两种单一拓扑结构混合起来,取两者的优点构成的拓扑。

一种是星型拓扑和环型拓扑混合成的"星-环"拓扑,另一种是星型拓扑和总线拓扑混合成的"星-总"拓扑。

CSMA/CD

CSMA/CD是一种争用型的介质访问控制协议。即带冲突检测的载波监听多路访问技术(载波监听多点接入/碰撞检测)。在传统的共享以太网中,所有的节点共享传输介质。如何保证传输介质有序、高效地为许多节点提供传输服务,就是以太网的介质访问控制协议要解决的问题。

CSMA/CD(多点接入载波监听/冲突检测)协议要点:

多点接入说明是总线型网络,计算机以多点接入的方式连接在一根总线上,协议的实质是“载波监听”“碰撞检测”。

载波监听就是利用电子技术检测总线上有没有其他计算机也在发送。载波监听实际上就是检测信道。在发送前,每个站不停地检测信道,是为了获得发送权;在发送中检测信道,是为了及时发现有没有其他站的发送和本站发送的碰撞,这就是碰撞检测。总之,载波监听是全程都在进行的。

碰撞检测就是边发送边监听。就是网卡边发送数据边检测新岛上的信号电压的变化情况,以便判断自己在发送数据的时候其他站是否也在发送数据。当几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会增大(互相叠加),当网卡检测到的信号电压超过一定的门限值时,说明总线上至少有两个站同时在发送数据,表明产生了碰撞(冲突),所以也称为冲突检测。这时,由于接收的信号已经识别不出来,所以任何一个正在发送的站就会立即停止发送数据,然后等待一段随机事件以后再次发送。

传播时延对碰撞检测的影响:

因为网卡只有在接收到电压幅度不正常的信号以后才能判断是否产生了冲突,所以它在接收到信号之前会认为信道是空闲的。但是信号传播会有延迟,比如下图:

如图为两台计算机A、B,假设二者指甲距离为一公里,如果A、B同时发送数据,则会在线路中间发生碰撞,那么A、B检测到碰撞的时间为图中单程端到端的传播时延t;若A先发,B后发,那么A最长时间检测到碰撞的时间为2t。

注:电磁波在1km电缆的传播时延约为5us(需要记住!)

在使用CSMA/CD协议时,一个站不可能同时进行发送和接收,进行的是半双工通信。

从图中可以看出,每个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。(这个时间是2t,t由两站之间的距离决定)这是以太网发送的不确定性。正是这种不确定性使得以太网的平均通信量远小于以太网的最高数据率。

以太网端到端的往返时间2t称为争用期(碰撞窗口)

截断二进制指数退避算法

以太网使用截断二进制指数退避算法来确定碰撞后重传的时机。这种算法让发生碰撞的站在停止发送数据后,不是等待信道变为空闲后立即再发送数据,而是退避一个随机的时间。一以减小再次发生碰撞的概率。具体算法如下:

  • 协议规定了基本退避时间为2t,具体的争用期时间通常取51.2us,对于10Mb/s的以太网,在争用期内可发送512bit,即64字节。
  • 从离散的整数集合【0,1,……(2^k-1)】中随机取一个数,记为r,重传应推后的时间就是r倍的争用期。

k=Min[重传次数,10]k=Min[重传次数,10]

  • 当重传次数不超过10时,参数k等于重传次数;当重传次数超过10时,k就不再增大一直等于10。
  • 当重传16次仍然不能成功时(这表明同时打算发送数据的站太多,以致连续发生冲突),则丢弃该帧,并向高层报告。

例如:

  • 在第一次重传时,k=1,随机数从{0,1}中选一个数。所以重传的推迟时间可以是0或者2t,随机选择。
  • 第二次发生碰撞,k=2,随机数从{0,1,2,3}中选一个,所以重传的推迟时间可以是0,2t,4t,6t随机选择一个。
  • 以此类推。。。

可能会出现这样一种情况就是:

某个站发送了一个很短的帧,但发生了碰撞,但发生了碰撞,不过在这个帧发送完毕后才检测到发生了碰撞。已经没有办法中止帧的发送,因为已经发送完了。这个时候即使发生了碰撞,那么刚才的帧也无法进行重传,就会产生错误。

注:数据帧能够重传的一个条件:以太网要实现重传,必须保证这个站在收到冲突信号的时候这个帧没有传完。

所以基于这种情况,以太网规定了一个最短帧的长度为64个字节,即512bit。因为64字节正好是争用期长度,如果在争用期内没有发生碰撞,那么就不会发生碰撞了。因此,凡长度小于64字节的帧都是由于冲突而异常停止的无效帧。接收端收到这种帧会直接丢弃。(对于10Mb/s传统以太网而言!!!)

我们知道信号在以太网上传播1km需要5us,以太网上最大的端到端的时延必须小于争用期的一半(25.6us),相当于以太网的最大端到端长度约为5km。实际上的以太网覆盖范围远没有这么大。因此实际的以太网都能在争用期51.2us内检测到可能发生的碰撞。以太网确定以51.2us作为争用期,不仅考虑了端到端时延,而且还考虑了好多其他因素。

强化碰撞

当发送数据的站一旦发现发生了碰撞时,除了立即停止发送数据外,还要再继续发送32比特或48比特的人为干扰信号,以便让所有用户都知道发生了碰撞。

以太网还规定了帧间最小间隔为9.6us,相当于96比特时间,这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。

以太网建立重传机制的原因:

首先,以太网不想采用连接机制,因为会降低效率,但他又想有一定的重传机制,因为以太网的重传是微秒级,而传输层的重传,如TCP的重传达到毫秒级,应用层的重传更达到秒级,我们可以看到越底层的重传,速度越快,所以对于以太网错误,以太网必须有重传机制。

CSMA/CD协议的工作过程:

  • 准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,,放入网卡的缓存中,但在发送之前,必须先检测信道。
  • 检测信道:不停地检测信道,一直等待信道空闲,并在96比特时间内信道保持空闲(保证了帧间最小时间间隔),就发送这个帧。
  • 在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里只有两种可能性:

    • 发送成功:在争用期内一直未检测到碰撞,这个帧发送成功,回到(1)
    • 发送失败:在争用期内检测到碰撞,这是立即停止发送数据,并按规定发送认为干扰信号。适配器接着就执行指数退避算法,等待r倍512比特时间后,返回到步骤(2),继续检测信道。若重传16次仍不能成功,则停止重传向上报错。

以太网每发完一帧,一定要把已经发送的帧暂时保留一下。如果在争用期内检测出发生了碰撞,那么还要在推迟一段时间后再把这个帧重传一次。

存储转发交换

存储转发(Store and Forward)是计算机网络领域使用得最为广泛的技术之一,以太网交换机的控制器先将输入端口到来的数据包缓存起来,先检查数据包是否正确,并过滤掉冲突包错误。确定包正确后,取出目的地址,通过查找表找到想要发送的输出端口地址,然后将该包发送出去。正因如此,存储转发方式在数据处理时延时大,这是它的不足,但是它可以对进入交换机的数据包进行错误检测,并且能支持不同速度的输入/输出端口间的交换,可有效地改善网络性能。它的另一优点就是这种交换方式支持不同速度端口间的转换,保持高速端口和低速端口间协同工作。实现的办法是将10Mbps低速包存储起来,再通过100Mbps速率转发到端口上。

存储转发技术又分为报文交换技术和分组交换技术。

(1)报文交换技术

当报文交换技术用于通信双方为相邻接点的情形,信源直接将报文投递给信宿。

当报文交换技术的通信双方不在同一物理网络时,则将准备好的报文经由一定的路由选择机制通过中间节点传给接收方。此时,中间节点不再只是起连接的作用,其还具有存储和处理数据的能力。

在报文交换系统中,由于一次交换处理的数据量大,因而需要对通信处理的存储和处理能力提出较高的要求,使得通信成本大大增加。且这种系统还易造成堵塞,灵活性和可靠性都会下降。同时,数据交换过程中出现差错的可能性也很大,且检测困难。

(2)分组交换技术

分组交换技术是分割一个报文中有效载荷数据,并加上一定的控制信息后及报文号,组建出一个个分组后,以分组为单位进行传输的一种数据交换模式。

此交换系统中的中间节点也不再只是简单的连接链路,而需要判断分组的对错,并进行路由选择。

分组交换技术中为避免造成网络堵塞,采用了一定的流量控制机制。报文的分组和重组会耗费大量时间,但它只发生在收发处,而分组的处理效率高,因而整体的效率也较高。可是由于通信过程中要加入一些通信控制数据,因此会造成许多重复的额外的开销;传输过程中分组有可能出现丢失、破环、乱序等情形,相关人员还需采取一定的策略去解决这些问题。

分组交换技术根据实现机制的不同分为:数据报交换技术和虚电路交换技术。

① 数据报交换技术

数据报交换技术和报文交换技术相似,不同的是前者每次传输的数据包时分组,而后者传输的是整个报文。

这是一种“无连接”的数据交换技术,它在数据传输的过程中具一定的路由算法动态选择数据报的传输路径,且这是一种无序传输。

②虚电路交换技术

虚电路交换技术与数据报交换技术不同,它是一种面向连接的交换技术。其之所以称之为“虚电路”是因为在数据交换的过程中,通信双方间会建立专门的动态逻辑电路。不同于电路交换系统中的物理电路,这个逻辑电路时非独占使用的,而是类似于信道复用技术复用中间节点的策略进行数据交换。但由于每次数据交换的时间都非常短暂,因此我们可以将所有分组的传输看作是同时进行的。每一个成功的虚电路需要分配一个识别号码,编码到分组里去,以免造成混乱。分组通过建立的这一专用通道进行有序传输,因此每个分组中不再包含控制数据,降低了辅助开销。

虚电路交换技术是一种可靠性较强,系统效率高的交换技术。其是在工作过程中建立专用的逻辑连接,每个节点可以和任何节点建立多条虚电路连接。由于不带辅助信息,系统额外开销小,中间节点具有一定的差错检测机制。

数据报交换技术和虚电路交换技术中的分组都需根据一定的路由算法选择通信路径,但前者的每一个分组都要单独寻找路由,而虚电路交换技术中一次通信过程的所有分组只需进行一次路由选择即可。显然,按数据报方式工作的路由计算要比按虚电路方式频繁。

VLAN

VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。

一张图看懂VLAN的作用:

由上图可以看出:通过划分不同的VLAN,VLAN内的主机间可以直接通信,而VLAN间不能直接互通,从而将广播报文限制在一个VLAN内。

优点:

限制广播域:广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力。

增强局域网的安全性:不同VLAN内的报文在传输时是相互隔离的,即一个VLAN内的用户不能和其它VLAN内的用户直接通信。

提高网络的健壮性:故障被限制在一个VLAN内,本VLAN内的故障不会影响其他VLAN的正常工作。

灵活构建虚拟工作组:用VLAN可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。

特殊IP

一、127.0.0.1

  127是一个保留地址,该地址是指电脑本身,主要作用是预留下作为测试使用,用于网络软件测试以及本地机进程间通信。在Windows系统下,该地址还有一个别名叫 localhost,无论是哪个程序,一旦使用该地址发送数据,协议软件会立即返回,不进行任何网络传输,除非出错,包含该网络号的分组是不能够出现在任何网络上的。

二、10.*.*.*,172.16.*.*――172.31.*.*,192.168.*.*

  上面三个网段是私有地址,可以用于自己组网使用,这些地址主要用于企业内部网络中,但不能够在Internet网上使用,Internet网没有这些地址的路由,而使用这三个网段的计算机要上网必须要通过地址翻译(NAT),将私有地址翻译成公用合法的IP地址。一些带宽路由器或是其它的网络设备,往往使用192.168.1.1作为缺省的地址,由于私有个人网络不会与外部互连,所以可以使用随意的IP地址,保留这三个网段的IP 地址使其使用,是为了避免以后接入公网时引起地址混乱。

三、0.0.0.0

  严格意义上来说,0.0.0.0已经不是真正意义上的ip地址了。它表示的是这样一个集合,所有不清楚的主机和目的网络。这里的不清楚是指在本机的路由表里没有特定条目指明如何到达。对本机来说,它就是一个收容所,所有不认识的三无人员,一律送进去。如果你在网络设置中设置了缺省网关,那么windows系统就会自动产生一个目的地址为0.0.0.0的缺省路由。

四、255.255.255.255

  受限制的广播地址,对本机来说,这个地址指本网段内(同一个广播域)的所有主机,该地址用于主机配置过程中IP数据包的目的地址,这时主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也还不知道。在任何情况下,路由器都会禁止转发目的地址为受限的广播地址的数据包,这样的数据包仅会出现在本地网络中。

五、224.0.0.0—239.255.255.255

  这是一组组播地址,需要注意它与广播地址的区别,其中224.0.0.1特指所有的主机,224.0.0.2特指所有的路由器,224.0.0.5指所有的OSPF路由器地址,224.0.0.13指PIMV2路由器的地址。另外从224.0.0.0――224.0.0.255只能用于局域网中路由器是不会转发的,239.0.0.0――239.255.255.255是私有地址(与192.168. *.*功能一样),224.0.1.0—238.255.255.255可以用于Internet上。如果你的主机开启了IRDp(Internet路由发现协议,使用组播功能)功能,那么你的主机路由表中应该会有这样的一条路由。

六、169.254.*.*

  如果你的主机使用了DHCP功能自动获得一个ip地址,那么当你的DHCP服务器发生故障或响应时间太长而超出系统规定的一个时间,windows系统会为你分配这样一个地址。如果你发现你的主机ip地址是个诸如此类的地址,很不幸,十有八九是你的网络不能正常运行了。

子网掩码的作用

一、 子网掩码的概念及作用  

子网掩码 (subnet mask) 又叫网络掩码、地址掩码、子网络遮罩,是一个应用于 TCP/IP 网络的 32 位二进制值。它可以屏蔽掉 IP 地址中的一部分,从而分离出 IP 地址中的网络部分与主机部分,基于子网掩码,管理员可以将网络进一步划分为若干子网。它必须结合 IP 地址一起使用。

二、 为什么需要使用子网掩码  

虽然我们说子网掩码可以分离出 IP 地址中的网络部分与主机部分,可大家还是会有疑问,比如为什么要区分网络地址与主机地址?区分以后又怎样呢?那么好,让我们再详细的讲一下吧!

通过计算机的子网掩码判断两台计算机是否属于同一网段的方法是,将计算机十进制的IP地址和子网掩码转换为二进制的形式,然后进行二进制“与”(AND)计算(全1则得1,不全1则得0),如果得出的结果是相同的,那么这两台计算机就属于同一网段。具体来说:

  1. 我们通过将本机的子网掩码接受方主机的 IP 地址进行 与 运算,即可得到目标主机所在的网络号,
  2. 又由于每台主机在配置 TCP/IP 协议时都设置了一个本机 IP 地址与子网掩码,将本机的子网掩码与本机的 IP 地址进行 与 运算,即可得到本机所在的网络号。

通过比较这两个网络号,就可以知道接受方主机是否在本网络上。如果网络号相同,表明接受方在本网络上,那么可以通过相关的协议(注:ARP,详细参考下面提高部分)把数据包直接发送到目标主机;如果网络号不同,表明目标主机在远程网络上,那么数据包将会发送给本网络上的路由器,由路由器将数据包发送到其他网络,直至到达目的地。在这个过程中你可以看到,子网掩码是不可或缺的!。

三、 如何用子网掩码得到网络 主机地址  

既然子网掩码这么重要,那么它是如何分离出 IP 地址中的网络地址和主机地址的呢?

过程如下:

1. 将 IP 地址与子网掩码转换成二进制;

2. 将二进制形式的 IP 地址与子网掩码做 ' 与 ' 运算,将答案化为十进制便得到网络地址;

3. 将二进制形式的子网掩码取 ' 反 ' ;

4. 将取 ' 反 ' 后的子网掩码与 IP 地址做 ' 与 ' 运算,将答案化为十进制便得到主机地址。

下面我们用一个例子给大家演示:

假设有一个 I P 地址: 192.168.0.1

子网掩码为: 255.255.255.0

化为二进制为: I P 地址 11000000.10101000.00000000.00000001

子网掩码 11111111.11111111.11111111.00000000

将两者做 ' 与 ' 运算得: 11000000.10101000.00000000.00000000

将其化为十进制得: 192.168.0.0

这便是上面 IP 的网络地址,主机地址以此类推。

面向连接和面向无连接

TCP是面向连接的
UDP是面向无连接的

TCP(Transmission Control Protocol,传输控制协议)
UDP(User Datagram Protocol,用户数据包协议)

       当IP包通过路由将数据传输到目的地时,会根据TCP或UDP包头中的源端口和目的端口信息,请求和获取不同的应用。也就是说,不管TCP还是UDP,都含有网络服务必须的源端口和目的端口信息,以建立和实现网络传输服务。这时,你的疑问就来了:既然都用于传输,为何要搞两个不同的协议呢?这就需要从网络中不同服务的需求来谈起。
      在网络中,有些服务,如HTTP、FTP等,对数据的可靠性要求较高,在使用这些服务时,必须保证数据包能够完整无误的送达;而另外一些服务,如DNS、即时聊天工具等,并不需要这么高的可靠性,高效率和实时性才是它们所关心的。根据这两种服务不同的需求,也就诞生了面向连接的TCP协议,以及面向无连接的UDP协议。
     这里的连接(Connection)和无连接(Connectionless)是网络传输中常用的术语,它们的关系可以用一个形象地比喻来说明,就是打电话和写信。
      打电话时,一个人首先必须拨号(发出连接请求),等待对方响应,接听电话(建立了连接)后,才能够相互传递信息。通话完成后,还需要挂断电话(断开连接),才算完成了整个通话过程。写信则不同,你只需填写好收信人的地址信息,然后将信投入邮局,就算完成了任务。此时,邮局会根据收信人的地址信息,将信件送达指定目的地。

参考链接:

https://baike.baidu.com/item/http/243074?fromtitle=HTTP%E5%8D%8F%E8%AE%AE&fromid=1276942&fr=aladdin#4

https://www.cnblogs.com/worldwalker77/p/5623959.html

https://baike.baidu.com/item/%E6%97%A0%E7%8A%B6%E6%80%81%E5%8D%8F%E8%AE%AE/2607781?fr=aladdin

https://blog.csdn.net/jiary5201314/article/details/51258835

http://baike.baidu.com/view/878.htmhttp://bbs.51cto.com/thread-68584-1.html

猜你喜欢

转载自blog.csdn.net/weixin_38214171/article/details/82914198