计算机网络基础知识汇总

网络模型

计算机网络是电脑相互连接组成的,这些电脑叫做主机,就像正常情况下两个人要用同一种语言交流一样,主机之间的联系也要按照相同的标准才行,这些标准叫做协议。为了实现主机之间的联系,网络模型每一层都有各自的功能,对应于各种各样的协议。所有的协议加起来就构成了互联网的核心,统称为"互联网协议"(Internet Protocol Suite)。

网络模型用来解释计算机网络之间进行通信的规则。网络模型一般是指OSI七层参考模型TCP/IP四层参考模型

计算机网络基础知识汇总_第1张图片

  1. 物理层
    主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(0 和 1的电信号)。这一层的数据叫做比特
    物理层上使用的协议有:802.3系列协议、802.11系列协议等,常见的物理层设备有:网卡、光纤、串口、并口等。信息分组:比特。
  2. 数据链路层
    对数据进行MAC地址(网卡的地址)的封装与解封装。数据链路层是在物理层已能将信号发送到通信链路中的基础上,负责建立一条可靠的数据传送通道,在相邻结点之间有效地传送数据。数据链路层通过一系列协议实现的功能包括:数据封装成帧、流量控制、差错控制、传输管理。就发送端而言,数据链路层将来自网络层的数据按一定规则转化为比特流送到物理层进行处理;就接收端而言,数据链路层将来自物理层的比特流合并成完整的数据供网络层使用。
    数据链路层上使用的协议有:PPP、PPPoE、CSMA/CD等,在这一层工作的设备是交换机,用来传输数据。 信息分组:帧。
  3. 网络层
    对数据进行IP地址的封装与解封装。数据链路层的数据(帧)在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。网络层介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向传输层提供最基本的端到端的数据传送服务。
    网络层上使用的协议有:IP、ARP、ICMP、IMGP等,在这一层工作的设备是路由器(负责将数据发送到不同的子网络)。信息分组:数据包。
  4. 传输层
    传输层实现发送端接收端之间的数据分组传送,负责保证实现数据包无差错、按顺序、无丢失和无冗余地传输。传输层使用一个寻址机制来标识一个特定的应用程序(端口号)从而确定数据的接收应用。传输层为运行在不同主机上的应用进程之间提供了逻辑通信功能。
    传输层上使用的协议有:TCP(传输控制协议)UDP(用户数据报协议)。信息分组:报文段。
  5. 会话层
    应用程序和网络之间的接口。在传输层的基础上,按照在应用进程之间约定的原则,使应用建立和维持会话,并能使会话获得同步。会话层使用校验点可使通信会话在通信失效时从校验点继续恢复通信。这种能力对于传送大的文件极为重要。
    会话层上使用的协议有:NetBIOS、LDAP等。
  6. 表示层
    表示层的主要功能是把应用层提供的信息变换为能够共同理解的形式,提供字符代码、数据格式、控制信息格式、加密等的统一表示。
    表示层上使用的协议有:ASCII、ASN.1、MPEG等。
  7. 应用层
    实现应用进程(如用户程序、终端操作员等)之间的信息交换,同时还具有一系列业务处理所需要的服务功能。应用层是直接提供服务给使用者的应用软件的层,如电子邮箱、实时通信程序等都属于应用层的范畴。
    应用层上使用的协议有:HTTP、FTP、SMTP、POP3等。信息分组:消息。

传输层,会话层,表示层,应用层实现的是端到端的功能(应用—应用),物理层,数据链层,网络层实现的是点到点的功能(主机—主机) 。帧是数据链路层的处理单元,报文是传输层的处理单元,比特是物理层的处理单元,消息是应用层的处理单元。
计算机网络基础知识汇总_第2张图片

IP协议

IP协议是网络层的协议。

通信过程中,每层协议都要加上一个数据首部(header),称为封装(Encapsulation):
计算机网络基础知识汇总_第3张图片
解封装,就是封装的逆过程,拆解协议包,处理包头中的信息:
计算机网络基础知识汇总_第4张图片

物理层收到的比特流会由数据链接层进行解析,一组电信号构成一个数据包,叫做。每一帧分成两个部分:标头(Head)和数据(Data)。Head包含数据包的一些说明项,比如发送者接收者数据类型等等,Data则是数据包的具体内容。这种数据包又叫做以太网数据包
计算机网络基础知识汇总_第5张图片

数据包是在网卡和网卡之间传输的,每一块网卡都拥有独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。接收者的MAC地址通过ARP协议(网络层)获取,数据包的标头部分存储着发送者和接收者的网卡地址,以太网会把数据包发给本网络中的每一台主机,让它们自行来解析标头,看接收者的地址是否和自己一致,如果一致,就接收这个数据包,做进一步处理,否则就丢弃掉。这一过程叫做广播

这种低效率的数据传输仅限于同一子网络下,如果发送者和接收者并不处于同一子网络下,数据包就要通过路由的方式先发送到子网络下,之后再广播到接收者。但是互联网是由无数的子网络构成的,如何区分这么多的MAC地址归属于哪一个子网络呢?

MAC地址本身并不能做到这一点,它至于厂商有关,与所处网络无关。

于是网络层引进了一套新的地址专门用来区分不同的子网络,称为网络地址,简称网址。网络地址与网卡地址是各自独立的,二者并没有任何的联系。由网址确定子网络,由MAC地址确定主机,通过二者的随机组合,就可以将数据包准确的发送给接收者。

规定网络地址的协议叫做IP协议。由IP协议规定的地址就叫做IP地址。常见的IP地址分为IPv4与IPv6两大类。

按照TCP/IP(Transport Control Protocol/Internet Protocol,传输控制协议/Internet协议)协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节。习惯上,我们用分成四字段的十进制数表示IP地址,从0.0.0.0一直到255.255.255.255

IP地址 = 网络地址 + 主机地址。互联网上的每一台计算机,都会分配到一个IP地址。网络地址是因特网协会的ICANN(the Internet Corporation for Assigned Names and Numbers)分配的,保证网络地址的全球唯一性。主机地址是由各个网络的系统管理员分配。网络地址的唯一性与网络内主机地址的唯一性确保了IP地址的全球唯一性。

IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。
计算机网络基础知识汇总_第6张图片
处于同一个子网络的电脑,它们IP地址中的网络地址必定是相同的。为了标识IP地址的网络部分和主机部分,要和子网掩码(subnet mask)结合。子网掩码与IP地址类似,也是32bit的数字,与IP地址对应,它的网络部分全是1,主机部分全是0。通过子网掩码我们就知道IP地址中的网络地址占的位数到底是8还是16还24。

一个比较简单的运算方法是对它们各自的IP地址和子网掩码进行AND运算(1+1=1,1+0=0,0+0=0),然后相互比较是否相同。这种计算的本质其实就是在比较网络地址,只不过更方便机器判断。举例:

主机A——IP:202.194.128.9,子网掩码:255.255.255.0
主机B——IP:202.194.128.14,子网掩码:255.255.255.0

计算A:1100 1010.1100 0010.1000 0000.0000 1001 AND 1111 1111.1111 1111. 1111 1111 .0000 0000 
= 11001010.1100 0010.1000 0000 .0000 0000 即 202.194.128.0

计算B:1100 1010.1100 0010.1000 0000.0000 1101 AND 1111 1111.1111 1111. 1111 1111 .0000 0000
= 11001010.1100 0010.1000 0000 .0000 0000 即 202.194.128.0

结果:A与B的网络标识计算结果相同,它们处于同一网段。

32位地址资源有限,IPv6作为下一代互联网协议,将IP地址长度从32位扩展到128位,支持更多级别的地址层次、更多的可寻址节点数以及更简单的地址自动配置。

总得来说,IP协议的目的就是为每一台计算机分配IP地址并且确定哪些地址属于同一子网络。

根据IP协议发送的数据,就叫做IP数据包,IP数据包包含一个完整的IP信息。

ARP协议

ARP协议同样是网络层的协议。

数据链接层收到网络层封装好的数据包,首先就要对其进行MAC地址的封装,如何通过IP来确定MAC地址就是ARP协议的任务。分为两种情况:

  1. 如果两台主机不在同一个子网络,就只能把数据包传送到两个子网络连接处的网关(gateway),让网关去处理。
  2. 如果两台主机在同一个子网络,ARP协议会发出一个数据包(包含在以太网数据包中),其中包含它所要查询主机的IP地址,在对方的MAC地址这一栏,填的是FF:FF:FF:FF:FF:FF,表示这是一个"广播"地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址,否则就丢弃这个包。

总之,有了ARP协议之后,我们就可以得到同一个子网络内的主机MAC地址,可以把数据包发送到任意一台主机之上了。

端口

有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。但是每台主机上都有很多个程序,不同的程序发送的数据如何区分呢?

端口(port)就是用来专门解决这个问题的, 传输层实现发送端接收端之间的数据分组传送,负责保证实现数据包无差错、按顺序、无丢失和无冗余地传输到目标端口。

如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536个,正好16个二进制位。

在Internet上,各主机间通过TCP/IP协议发送和接收数据包,各个数据包根据其目的主机的ip地址来进行互联网络中的路由选择,把数据包顺利的传送到目的主机。大多数操作系统都支持多程序(进程)同时运行,主机通过端口就可以将数据包发送给目标应用。

"传输层"的功能,就是建立"端口到端口"的通信。相比之下,“网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。因此,Unix系统就把主机+端口,叫做"套接字”(socket)。有了它,就可以进行网络应用程序开发了。

传输层的TCP和UDP协议就主要负责对端口信息进行封装。

TCP&UDP

TCP和UDP都属于传输层的协议,用来实现端到端的信息传输。

TCP——传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

UDP——用户数据报协议(User Datagram Protocol)是一中简单的,面向数据报的传输层协议。

TCP/IP 和UDP最大的区别就是:TCP是面向连接的,UDP是无连接的。TCP协议和UDP协议各有所长、各有所短,适用于不同要求的通信环境。

UDP只是简单地将数据源和端口信息封装成数据包中,每个数据报的大小在限制在64k。UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号, 发送端不知道数据是否会正确接收,属于不可靠协议。

面向连接的TCP协议提供可靠的数据传输,保证数据无差错、不丢失、不重复、按循序到达。面向连接就是在正式通信前必须要与对方建立起连接,是按照电话系统建模的。比如你给别人打电话,必须等线路接通了,对方拿起话筒才能开始相互通话。

TCP UDP
数据格式 字节流 数据报
是否连接 面向连接 无连接
传输可靠性 可靠的 不可靠的
应用场景 传输大量数据 少量数据
速度
流量控制

TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而UDP不提供任何这样的保证。

  • TCP连接时的状态:
字段 含义
URG 紧急指针是否有效。为1,表示某一位需要被优先处理
ACK 确认号是否有效,一般置为1。
PSH 提示接收端应用程序立即从TCP缓冲区把数据读走。
RST 对方要求重新建立连接,复位。
SYN 请求建立连接,并在其序列号的字段进行序列号的初始值设定。建立连接,设置为1
FIN 希望断开连接。

ACK(Acknowledgement)、SYN(Synchronize Sequence Numbers)和FIN这些大写的单词表示标志位,其值要么是1,要么是0;ack、seq小写的单词表示序号

序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号

确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号

序列号和确认号又是保障数据的正确性以及窗口滑动机制的最基本的根据。

TCP在正式通信前必须要与对方建立起连接(1对N),TCP的三次握手
计算机网络基础知识汇总_第7张图片

  1. 第一次握手:客户端发起连接请求: SYN = 1,ACK = 0(表示这是一个连接请求报文段)和一个随机序列号seq = x。客户端进入SYN_SENT状态。
  2. 第二次握手:服务端监听到请求,回复:SYN = 1,ACK = 1(表示这是一个同意建立连接的报文段)和一个自己的序列号seq = y以及一个客户端确认号ack = x+1。服务端进入SYN_RCVD状态。
  3. 第三次握手:客户端收到返回信息,同步了相关序列号和确认号的数值,但是服务端还没有接收到客户端回复的确认号。所以客户端会再次发送报文:SYN=0,ACK=1(表示序列号同步完成)和数据包序列号seq = x+1以及服务端确认号ack = y+1。 发送这个值之后,客户端进入到 ESTABLISHED 状态,服务端接受到这个值之后也进入ESTABLISHED 状态。然后就可以开始传递数据通信了。

至此,三次握手结束,客户端和服务端已经建立起了连接。

  • Q:为什么要进行第三次握手?
    为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。—— 谢希仁的《计算机网络》
  • Q:三次握手的意义是什么?
    为了同步序列号和确认号的相关信息,序列号和确认号是保障数据的正确性以及窗口滑动机制的最基本的根据。
  • Q:为什么不是两次握手?
    对客户端和服务端来说,数据的一来一回才是建立可靠连接的基本要求,只进行两次握手对服务端来说并没有达到数据的一来一回。

通信结束后,TCP为了保证数据的正常中断,采用了四次挥手机制:
计算机网络基础知识汇总_第8张图片

  1. 第一次挥手: 客户端应用进程先发出连接释放报文段(假设seq = p),主动关闭TCP连接,并把连接释放报文段首部的终止控制位FIN = 1(FIN字段用来释放一个连接),进入FIN-WAIT-1状态。
  2. 第二次挥手:服务端收到连接释放报文段,返回 ACK = 1表示收到请求,并返回确认号ack = p+1。服务端进入CLOSED-WAIT状态。客户端收到这个报文后进入FIN-WAIT-2状态,等待服务端发送连接释放报文段。
  3. 第三次挥手:服务端没有再向客户端发送的消息,就返回连接释放报文段:FIN = 1, (表示同意断开连接),同时返回自己的序列号seq = q,且重复上次的确认号ack=p+1同时设置ACK = 1(表示确认号有效)。服务端进入LAST-ACK状态。
  4. 第四次挥手:客户端接收到服务端发送的 FIN 数据进入到 TIME- WAIT 状态,同时回复服务端,表示已经接收到了 FIN 数据。回复的包中包含: ACK = 1,确认号ack = q+1。客户端等待2∗MSL(最长报文段寿命)后进入CLOSED状态,同时服务端收到这个确认信息后也将进入CLOSED状态。

至此,四次挥手结束,TCP连接正式断开。

  • Q:为什么客户端要为什么需要设置一个 TIME-WAIT 的时间?
    作用一:确保服务端收到最后的ACK。如果因为IP协议的不可靠性后者网络波动导致服务端迟迟收不到ACK,那么超时后服务端就会再次发送FIN信息,在这个过程中如果客户端已经处于CLOSED状态就会返回RST要求重连。所以,客户端需要等待一段时间,当再次收到FIN的时候,能够保证对方收到ACK,最后正确的关闭连接。
    作用二:保证本次连接的所有数据都从网络中消失。假设新连接和已经关闭的老连接端口号是一样的,上一次连接的某些数据有可能仍然滞留在网络中,这些延迟数据在建立新连接之后才到达Server,导致Server误以为这是新连接发送的数据包而产生错误。所以TCP连接还要在TIME_WAIT状态等待2倍MSL,这样可以保证本次连接的所有数据都从网络中消失。
  • Q:为什么是四次挥手而不是三次挥手?
    相对而言,资源的回收比资源的分配要困难,三次握手的实质是把四次挥手的二、三步骤合二为一。四次挥手中二三步骤都是服务端向客户端发送信息,中间存在一个CLOSED-WAIT的状态。之所以存在CLOSE_WAIT状态,是因为Server可能还存在着需要发送给Client的数据,如果存在着这些数据,那么这个状态的时间,就是用来发送这些数据的。

DNS

DNS,域名系统(Domain Name System)是互联网的一项服务。它作为将域名IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。

IP地址是网络上标识站点的数字地址,但是不方便记忆和使用。为了方便记忆,人们采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。

  • Q:DNS寻址过程?

假定域名为m.xyz.com的主机想知道另一个主机y.abc.com的IP地址。例如,主机m.xyz.com打算发送邮件给y.abc.com。这时就必须知道主机y.abc.com的IP地址。

如果在m.xyz.com的主机上不久前已经有用户查询过y.abc.com的IP地址,那么本地域名服务器就不必向根域名服务器重新查询y.abc.com的IP地址,而是直接把告诉缓存中存放的上次查询结果(即y.abc.com的IP地址)告诉用户。

查询步骤:

  1. 主机m.abc.com先向本地服务器dns.xyz.com进行递归查询。

  2. 本地服务器采用迭代查询。它先向一个根域名服务器查询。

  3. 根域名服务器告诉本地服务器,下一次应查询的顶级域名服务器dns.com的IP地址。

  4. 本地域名服务器向顶级域名服务器dns.com进行查询。

  5. 顶级域名服务器dns.com告诉本地域名服务器,下一步应查询的权限服务器dns.abc.com的IP地址。

  6. 本地域名服务器向权限域名服务器dns.abc.com进行查询。

  7. 权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机的IP地址。

  8. 本地域名服务器最后把查询结果告诉m.xyz.com。

整个查询过程共用到了8个UDP报文。为了提高DNS查询效率,并减轻服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛使用了高速缓存,用来存放最近查询过的域名以及从何处获得域名映射信息的记录。

HTTP协议

HTTP协议详解

超文本传输协议(HTTP)是一种通信协议,它用来将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。HTTP诞生之初主要是应用于WEB端内容获取。HTTP协议使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTP是一个应用层协议,由请求响应构成,是一个标准的客户端服务器模型。特点:

  1. HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
  2. HTTP是无状态的:无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传。这么做是为了提高Web服务器对并发访问的处理能力。
  • Q:HTTP的长连接和短连接 ?

HTTP 协议有 HTTP/1.0 版本和 HTTP/1.1 版本。 HTTP1.1 默认保持长连接(HTTP persistent connection,也翻译为持久连接),数据传输完成了保持 TCP 连接不断开(不发 RST 包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。在 HTTP/1.0 中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次 HTTP 操作,就建立一次连接,任务结束就中断连接。 从 HTTP/1.1 起,默认使用的是长连接, 用以保持连接特性

  • Q:如何解决HTTP无状态的问题?
  1. 通过Cookies保存状态信息。Cookie是一种会话技术,它用于将会话过程中的数据保存在用户的浏览器中,从而使得浏览器和服务器更好的交互。当服务器向客户端发送Cookie时,会在HTTP响应头字段增加Set-Cookie字段,该字段设置的Cookie遵循一定的规则,以键值对的形式保存,Cookie属性值可以有多个,但是这些属性之间必须以分号和空格分隔。
  2. 通过Session保存状态信息。Session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。
  3. 通过表单变量保持状态。
  4. 通过设置URL中的Query_String保持状态。
  • Q:Cookies和Session的区别?
  1. Cookie将状态保存在客户端,Session将状态保存在服务器端;
  2. Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。Cookie最早在RFC2109中实现,后续RFC2965做了增强。网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求缚上这些cookies。Session并没有在HTTP的协议中定义;
  3. Session是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分是哪个用户session变量,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用cookie时,这个值也可能设置为由get来返回给服务器;
  4. 就安全性来说:当你访问一个使用session 的站点,同时在自己机子上建立一个cookie,建议在服务器端的SESSION机制更安全些。因为它不会任意读取客户存储的信息。

请求和响应

在Internet中所有的传输都是通过TCP/IP进行的。HTTP协议作为TCP/IP模型中应用层的协议也不例外。HTTP默认的端口号为80。HTTP协议工作于客户端-服务端架构上。

浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。Web服务器根据接收到的请求后,向客户端发送响应信息。

浏览器显示的内容都有 HTML、XML、GIF、Flash 等,浏览器是通过 MIME Type 区分它们,决定用什么内容什么形式来显示。MIME Type 是该资源的媒体类型。

HTTP在开始传输之前,首先需要建立TCP连接,也就是所谓的三次握手,在HTTP在传输完成之间不会断开TCP连接。

  • 请求消息格式

请求行(request line)、请求头部(header)、空行请求数据四个部分组成:
计算机网络基础知识汇总_第9张图片

常见的请求方法有三种(HTTP1.1已经将请求方法扩展到9种):

序号 方法 描述
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
  • Q:请求方法GET和POST有什么区别?
  1. GET 请求的数据会附在 URL 之后(就是把数据放置在 HTTP 协议头中),以?分割 URL 和传输数据,参数之间以&相连,如:login.action?name=zhagnsan&password=123456。 POST 把提交的数据则放置在是 HTTP 包的body中。
  2. GET的语义是请求获取指定的资源,POST的语义是根据请求负荷(报文主体)对指定的资源做出处理。
  3. GET 方式提交的数据最多只能是 1024 字节,理论上 POST 没有限制,可传较大量的数据。
  4. POST 的安全性要比 GET 的安全性高。过 GET 提交数据将以明文的形式出现在 URL 上。
  • 响应消息格式

HTTP响应也由四个部分组成,分别是:状态行消息报头空行响应正文
计算机网络基础知识汇总_第10张图片

  • Q:HTTP中常见的状态响应码有哪些?
    200 OK //客户端请求成功
    301 Moved Permanently //(永久移除),请求的 URL 已移走。 Response 中应该包含一个 Location URL, 说明资源现在所处的位置
    302 found //重定向
    400 Bad Request //客户端请求有语法错误, 不能被服务器所理解
    401 Unauthorized //请求未经授权
    403 Forbidden //服务器收到请求,但是拒绝提供服务
    404 Not Found //请求资源不存在
    500 Internal Server Error //服务器发生不可预期的错误
    503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

URL

URL(Uniform Resource Locator),统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。URL用来作为万维网的地址。

  • URL的格式?
    schema://host[:port#]/path/.../[;url-params][?query-string][#anchor]
      1. scheme 指定低层使用的协议(例如:http, https, ftp)
      2. host HTTP服务器的IP地址或者域名
      3. port# HTTP服务器的默认端口是80,非默认必须指定
      4. path 访问资源的路径
      5. url-params 参数
      6. query-string 发送给http服务器的数据
      7. anchor- 锚

URL 的一个例子:
http://www.mywebsite.com/sj/test;id=8079?name=sviergn&x=true#stuff

  1. Schema: http
  2. host: www.mywebsite.com
  3. path: /sj/test
  4. URL params: id=8079
  5. Query String: name=sviergn&x=true
  6. Anchor: stuff
  • Q:浏览器地址栏输入一个URL到屏幕显示该网页时都发生了什么 ?
  1. 如果输入的是域名而不是IP首先要进行DNS寻址。
  2. 浏览器与服务器通过三次握手建立TCP连接后,浏览器向服务器发送http请求(Get和post,协议版本,是否缓存,url,是否发送cookies)
  3. 服务器处理请求返回http响应。
  4. 浏览器根据资源类型,将资源组织成在屏幕上显示的图像(网页渲染)解析HTML,生成DOM树;解析css文件;生成渲染树(受样式影响,比如不可见元素和display:none的元素都不在树中);绘制渲染树
  5. TCP四次挥手关闭连接。(服务器长期未接收到http请求报文时会关闭连接)

你可能感兴趣的:(Review,&,Summary)