一. OSI、TCP/IP、五层协议?
1.1 OSI、TCP/IP、五层协议体系结构
二. 每层的功能和协议?
2.1 应用层
- 功能:通过应用程序间的交互来完成特定网络应用。不同的网络应用需要不同的应用层协议.
- 协议:
2.2. 运输层:
- 功能:
a. 向两台主机的进程之间的通信提供通用的(多种应用可以使用同一个运输层服务)数据传输服务。应用进程利用这个服务传送应用层报文。
b. 一台主机可同时运行多个线程,故其有复用和分用的功能。复用是多个应用层进程可以同时使用下面运输层的服务。分用指运输层把收到的信息交付给向上层中的相应进程。 - 协议:
2.3 网络层:
- 功能:在计算机网络中的两个计算机之间的通信可能会通过很多个数据链路和通信子网。所以要选择合适的网间路由和交换结点,确保数据及时传送。在发送数据时,将运输层产生的报文段或用户数据段封装成分组(IP数据报、数据报)和包进行传送。互联网是由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来的。互联网使用的网络层协议是无连接的网际协议(Intert Prococol)和许多路由选择协议,因此互联网的网络层也叫做网际层或IP层。
- 协议:
2.4 数据链路
- 功能:两台主机之间传输数据,是在一段链路一段链路上进行的,所以需要专门的链路层协议。两个相邻节点之间传送数据**时,数据链路层会将网络层的IP数据报封装成帧,每帧包括数据和一些控制信息。接收数据时,数据链路层可以通过控制信息知道帧的起始和结束,然后提取数据部分传给网络层。并且丢弃出差错的帧,避免浪费网络资源。
- 协议:ppp
2.5 物理层:
- 功能:实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。 使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。
三、 应用层
3.1. 域名系统
3.2. HTTP协议
3.2.1HTTP长连接、短连接
HTTP的长短连接其实是TCP的长短连接。
- a. 短连接:客户端和服务器之间每进行一次HTTP操作,就会建立一次连接。任务结束,连接断开。
- b. 长连接:在HTTP/1.1中,默认使用长连接。在HTTP协议头部加上connection:keep-alive,连接一直保持,当一个网页打开完成之后,客户端和服务器之间用于传输HTTP数据的TCP连接不会断开。但是不会永久保持连接,可以在不同的服务器(Apache)中设置时间。但前提条件是客户端和服务器都要支持长连接。
- c. TCP短连接: client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起 close操作.短连接一般只会在 client/server间传递一次读写操作。
- d. TCP长连接:client向server发起连接,server接受client连接,双方建立连接。Client与server完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。
3.2.2 HTTP报文
- a. 请求报文
发生在客户端。发送HTTP请求的过程就是构建HTTP请求报文并通过TCP协议中发送到服务器指定端口(HTTP协议80/8080, HTTPS协议443)。HTTP请求报文是由三部分组成: 请求行, 请求报头和请求正文。
常用的方法有: GET, POST, PUT, DELETE, OPTIONS, HEAD。
- b. 响应报文:服务器返回给浏览器的文本信息,通常HTML, CSS, JS, 图片等文件就放在这一部分。状态码, 响应报头和响应报文。后端工程师眼中的HTTP。后端从在固定的端口接收到TCP报文开始,这一部分对应于编程语言中的socket。它会对TCP连接进行处理,对HTTP协议进行解析,并按照报文格式进一步封装成HTTP Request对象,供上层使用。这一部分工作一般是由Web服务器去进行,一般Web服务器有Tomcat, Jetty和Netty等等。
- c. put,post,get的区别
3.2.3 各种协议与HTTP协议之间的关系
- a. HTTP和HTTPS:
(1) HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。
(2) HTTP协议时超文本传输协议,信息明文传输;HTTPS则是具有安全性的SSL加密传输协议,即安全版的HTTP。
(3) HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
(4) HTTPS的连接很简单,是无状态的;HTTPS协议是有由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。
面试题之HTTPS加密方式
-
b. HTTPS:
-
为什么要加密呢?
因为HTTP报文是包裹在TCP报文里面的,服务器端收到报文段后,会解包提取HTTP报文,而HTTP报文是明文,所以若传输过程中被截取,有可能泄露信息,所以需要在HTTP报文进入TCP报文之前,先使用SSL对HTTP报文进行加密。HTTPS协议的本质就是HTTP + SSL(or TLS)。 -
过程是什么?
HTTPS在传输数据之前需要客户端与服务器进行一个握手(TLS/SSL握手),在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL使用了非对称加密,对称加密以及hash等。HTTPS相比于HTTP,虽然提供了安全保证,但是势必会带来一些时间上的损耗,如握手和加密等过程,是否使用HTTPS需要根据具体情况在安全和性能方面做出权衡。
3.2.4状态码:
最常见的状态码,比如:200(OK)、404(Not Fount)、403(Forbidden,禁止访问错误)、302(Redirect,重定向)、504(Bad Gateway,无效网关)。
四、运输层
4.1 UDP
- UDP报头:
- 特点: