计算机网络

1、基本概念划分

OIS的七层协议:应用层、表示层、会话层、运输层、网络层、数据链路层、物理层
OIS的五层协议:应用层、运输层、网络层、数据链路层、物理层

  • 物理层:发送器,通常源点生成的数字比特流要通过发送器编码后才能够在传输系统进行传输。典型的发送器就是调制器。现在很多PC使用的内置的调制解调器。目的系统:接收器:接受传输系统传送过来的信号,并把它转换为能够被目的设备处理的信息。典型的接收器就是解调器,它把来自传输路线上的模拟信号进行解调,提取出在发送端置入的信息,还原出发送端产生的数字比特流。
  • 数据链路层:数据链路层使用的信道种类:点对点信道(PPP协议)、广播信道(CSMA/CD协议)。
  • 网络层:网络层提供的服务:虚电路服务、数据报服务(网络层向上只提供简单灵活的、无连接、尽最大努力交付的数据报服务)。网际协议IP、网际控制报文协议ICMP。
  • 运输层:运输层向它上面的应用层提供通信服务,两个主机进行通信就是两个主机中的应用进程相互通信。通信的真正端点并不是主机而是主机中的进程。端对端的通信是应用进程间的通信。运输层两个主要协议:用户数据报协议UDP,传输控制协议TCP。
  • 应用层:域名系统DNS,文件传送协议FTP
    应用层

2、TCP和UDP

  • 用户数据报协议UDP:UDP是无连接的,发送数据之前不需要建立连接,减少了开销和发送数据之间的时延;UDP使用尽最大努力交付,UDP是面向报文的;UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低;UDP支持一对一、一对多、多对一和多对多的交互通信;UDP的首部开销小,只有8字节,TCP20字节。
  • 传输控制协议TCP:TCP是面向连接的运输层协议;每一条TCP连接只能有两个端点,每一条TCP连接只能点对点的;TCP提供可靠的交付,通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达;TCP提供全双工通信;面向字节流,TCP中的流指的是流入到进程或者从进程流出的字节序列。

TCP,UDP的基本区别:

  • TCP面向连接(如打电话要先拨号建立连接;UDP是无连接的,即发送数据之前不需要建立连接);
  • TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达,UDP尽最大努力交付,即不保证可靠交付;
  • TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流,UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等);
  • 每一条TCP连接只能是点到点的,UDP支持一对一,一对多,多对一和多对多的交互通信;
  • TCP首部开销20字节,UDP的首部开销小,只有8字节;
  • TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。
    UDP的应用场景:面向数据报方式,网络数据大多为短消息,拥有大量Client,对数据安全性无特殊要求,网络负担非常重,但对响应速度要求高。

3、三次握手和四次挥手:

三次握手和四次挥手
  • 为什么连接的时候是三次握手,关闭的时候是四次握手:
    因为当server端收到Client端的SYN连接报文后,可以直接发送SYN+ACK报文,其中ACK报文时用来应答的,SYN报文时用来同步的。但是关闭连接时,当SERVER端受到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉CLIENT端"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

  • 为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
    答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。

4、Http协议

HTTP协议是Hyper Text TransferProtocol(超文本传输协议),是用于从万维网服务器传输文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据。HTTP是一个属于应用层的面向对象的协议。

4.1主要特点

简单快速,灵活(HTTP允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记),无连接,无状态(协议对于事务处理没有记忆能力),支持B/S及C/S模式。

4.2 HTTP工作原理

HTTP协议定义web客户端如何从web服务器请求web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。HTTP请求、响应步骤:a.客户端连接到web服务器;b.发送HTTP请求;c.服务器接受请求并返回HTTP响应;d.释放连接TCP连接;e.客户端浏览器解析HTML内容。

4.3URI和URL的区别

URI是统一资源标识符,用来唯一的标识一个资源(如人的身份证号可以唯一指定一个人),URL是统一资源定位符,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源(如//地球/中国/浙江省/杭州市/西湖区/某大学/14号宿舍楼/525号寝/张三.人)

4.4 HTTP请求方法

GET请求指定的页面信息,并返回实体主体,POST向指定资源提交数据进行处理请求,数据报被包含在请求体中。

GET和POST请求的区别:

  • GET提交请求的数据会附在URL之后,以?分割URL和传输数据,多个参数用&连接。POST提交把提交的数据放置在HTTP包的包体中。
  • 传输数据的大小,HTTP协议并没有对传输数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。但是浏览器和服务器对URL长度有限制,所以GET提交时传输数据就会受到URL长度的限制。POST理论上不受限制,但实际各个web服务器会规定对POST提交数据大小进行限制。
  • 安全性,POST比GET安全性要高。

4.5长连接和短连接

数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据,相反就是短连接,长连接适用于进行大量数据传输的情况,如数据库,redis,memcached等要求快速,数据量大的情况。客户端的长连接不可能无限期,会有一个超时时间,服务器有时候会告诉客户端超时时间

image

上图中的Keep-Alive:timeout=20,表示这个TCP通道可以保持20秒。对于客户端来说,如果服务器没有告诉客户端超时时间也没关系,服务端可能主动发起四次握手断开TCP连接,客户端能够知道该TCP连接已经无效;另外TCP还有心跳包来检测当前连接是否还活着,方法很多,避免浪费资源。

4.6HTTP状态码

1XX:指示信息—标识请求已接受,继续处理
2XX:成功—表示请求已被成功接收、理解、接受
3XX :重定向—要完成请求必须进行更进一步的操作
4XX:客户端错误—请求有语法错误或请求无法实现
5XX:服务器端错误—服务器未能实现合法的请求
200 OK  客户端请求成功
400 Bad Request  客户端请求有语法错误,不能被服务器所理解
401 Unauthorized  请求未经授权
403 Forbidden  服务器收到请求,但是拒绝提供服务
404 Not Found  请求资源不存在
500 Internal Server Error  服务器发生不可预期的错误
503  Server Unavailable  服务器当前不能处理客户端的请求,一段时间后可能恢复正常

5、SOCKET

网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定。
过程:Server端Listen(监听)某个端口是否有连接请求,Client端向Server端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息。为了实现在服务器方给多个客户提供服务的功能,利用多线程实现多客户机制,服务器总是在指定的端口上监听是否有客户请求,一旦监听的客户请求,服务器就会启动一个专门的服务器线程来响应该客户的请求,而服务器本身在启动完线程之后又进入监听状态,等待下一个客户的到来。

6、浏览器的一个请求从发送到返回都经历了什么?

1)、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
2)、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
3)、浏览器发出读取文件(URL中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
4)、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
5)、释放TCP连接;
6)、浏览器将该 html 文本并显示内容;

7、forward(转发)和redirect(重定向)的区别

  • forward是服务器行为,服务器请求资源,服务器直接访问目标地址的URL,把那个url的响应内容读取出来,然后把这些内容再发给浏览器,所以地址栏还是原来的地址。
  • Redirect是客户端行为,服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,所以地址栏显示的是新的URL,两次request,第一次客户端request A,服务器响应,并response回来,告诉浏览器,你应该去B.这时候可以看到地址变化,历史的回退按钮也亮了。

8、cookie和session的比较:

  • 存在的位置:cookie存在于客户端,临时文件中;session存在于服务器的内存中,一个session域对象为一个用户浏览器服务。
  • 安全性:cookie以明文的方式存放再客户端,安全性低,可以通过一个加密算法进行加密后存放;session存放于服务器的内存中,所以安全性好。
  • 网络传输量:cookie会传递消息给服务器;session本事存放于服务器,不会有传送流量。
  • 生命周期:cookie的生命周期是累计的,从创建时开始计时,20分钟后,cookie生命洲际结束;session的生命周期时间隔的,从创建时,如果20分钟内访问过session将重新计算session的生命周期;关机会造成session生命周期结束,但是对cookie没影响。关闭tomcat会使session失效
  • 访问范围:cookie为多个用户浏览器共享;session为一个用户独享。

9、https

HTTPS和HTTP的区别主要如下:

  • https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
  • http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤
(1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
(2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
(3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
(4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
(5)Web服务器利用自己的私钥解密出会话密钥。
(6)Web服务器利用会话密钥加密与客户端之间的通信。

你可能感兴趣的:(计算机网络)