SIX------计算机网络

212 阅读9分钟

1、Http与Https的区别

Http协议就是客户端和服务器交互的一种通迅的格式,Http是超文本传输协议;Https为超文本传输安全协议。

• Https比Http更安全:

Http协议传输的数据时未经过加密的,也就是明文;

Https在使用Http进行通信时,利用了SSL(Secure Sockets Layer)协议进行了加密传输(Http+SSL),
比Http更安全。

• Http无需证书,https使用需要CA证书,大部分都是付费使用的:

• 端口不一样:

Http与Http使用不同的连接方式,用的端口也不一样,前者默认是80,后者是默认443

2、什么是Http协议无状态协议? 怎么解决Http协议无状态协议?

无状态协议对于事务处理没有记忆能力。
------也就是说,当客户端一次HTTP请求完成以后,客户端再发送一次Http请求,Http并不知道当前客户端是一个“老用户”。

可以使用Cookie来解决无状态的问题,Cookie就相当于一个通行证,第一次访问的时候给客户端发送一个Cookie,
当客户端再次来的时候,拿着Cookie(通行证),那么服务器就知道这个是“老用户”。

3、请简述TCP\UDP的区别

TCP和UDP是OSI模型中的运输层中的协议:
-----TCP是传输控制协议,提供的是面向连接、可靠的字节流服务。通信双方彼此交换数据前,必须先通过三次握手协议建立连接,之后才能传输数据。
-----UDP是用户数据报协议,是一个面向无连接的协议。UDP不提供可靠的服务。在传输数据前不用建立连接故而传输速度很快。UDP主要用户流媒体传输,IP电话等对数据可靠性要求不是很高的场合。

TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接。

TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;
UDP尽最大努力交付,即不保证可靠交付。

Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,
还可以对次序乱掉的分包进行顺序控制。

UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。

每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。

4、请简单说一下你了解的端口及对应的服务?

5、TCP如何保证数据的可靠传输的 ?

TCP协议保证数据传输可靠性的方式主要有: 校验和、超时重传、流量控制、拥塞控制、TCP 的接收端会丢弃重复的数据 停止等待协议 (也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组)

其中4种拥塞控制算法:慢启动,拥塞避免,快速重传和快速恢复

**6、说一说TCP的三次握手和四次挥手 **

第一次握手:

客户端发送SYN(seq=x)报文给服务器端,客户端进入SYN_SEND状态

第二次握手:

服务器端收到SYN报文,并回应一个SYN(seq=y)报文和ACK(ack=x+1)报文,服务器端进入SYN_RECV状态  

第三次握手:

客户端收到服务器端SYN报文,并回应一个志位ACK(ack=y+1)报文,客户端和服务器端进入Established状态

在三次握手完成后,TCP客户端和服务器端成功建立连接,可以开始传输数据,具体流程如下: TCP连接是全双工的(即数据可在两个方向上同时传递),因此每个方向都必须单独进行关闭
第一次挥手:

客户端调用断开连接请求,向服务器端发送一个终止标志位FIN=1,seq=u的消息,此时客户端处于FIN-WAIT-1状态

第二次挥手:

服务器端在收到这个FIN消息后返回一个ACK=1,ack=u+1,seq=v的消息给客户端,表示接收到客户端断开连接的请求。
此时服务器端处于CLOSE-WAIT状态,即半关闭状态,即客户端已经没有要发送的数据了,
但服务端若发送数据,则客户端仍要接收。客户端收到消息后处于FIN-WAIT-2状态

第三次挥手:

服务器端发送一个终止标志位FIN=1,ACK=1,ack=u+1,seq=w的消息给客户端,表示关闭连接前服务器端需要
向客户端发送的消息已经发送完毕,此时服务器端处于LAST-ACK状态,等待客户端最终断开连接

第四次挥手:

客户端接收到FIN消息后,发送一个ACK=1,ack=w+1,seq=u+1的消息给服务器端,表示准备断开连接,
此时客户端处于TIM-WAIT状态,TCP连接还没释放,在经过等待计时器设置时间2ms后,没有收到服务器端的数据后,
客户端进入CLOSED状态。 

7、为什么TCP链接需要三次握手,两次不可以么,为什么?

为了防止已失效的链接请求报文突然又传送到了服务端,因而产生错误
谢希仁版《计算机网络》中的例子:
client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求,于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于采用“三次握手”现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送ack包。

8、IP地址分为哪几类?简单说一下各个分类

IP地址由网络地址和主机地址。
IP地址编址方案将IP地址空间划分为A、B、C、D、E五类,其中A、B、C是基本类,D、E类特殊地址。 9、在浏览器中输入网址之后执行会发生什么?

客户端浏览器通过DNS解析域名对应的IP地址
浏览器向IP对应的web服务器发送一个HTTP请求
服务器响应请求,发回网页内容
浏览器解析网页内容

10、常见的Http状态码

200 – 请求成功

301 – 资源(网页等)被永久转移到其它URL

404 – 请求的资源(网页等)不存在

500 – 内部服务器错误   

11、OSI网络体系结构与TCP/IP协议模型
物理层:

主要定义物理设备标准,传输比特流,即模数转换和数模转换,在发送端将0,1转化为电流强弱来传输 

数据链路层:

对数据包中的MAC地址进行封装和解析,在这一层工作的设备有网卡、网桥、交换机

网络层

对数据包中的IP地址进行封装和解析,在这一层工作的设备有路由器、交换机、防火墙等

传输层

负责在两个通信的计算机之间建立连接,定义传输数据的协议和端口号,在这一层工作的协议有TCP和UDP

会话层

在会话层及以上的高层次中,数据传送的单位统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在
内的建立和维护应用之间通信的机制,如服务器验证用户登录便是由会话层完成的

表示层

对接收的数据进行解释、加解密、解压缩,即把计算机能识别的内容转换成人能识别的内容(图片、文字、声音等)

应用层

提供网络与用户程序之间的接口服务,发起网络通信的应用程序。

12、简单解释一下网络层的ARP协议的工作过程

ARP(Address Resolution Protocol)即地址解析协议。 13、 http 响应码 301 和 302 代表的是什么?有什么区别?

301,302 都是HTTP状态的编码,都代表着某个URL发生了转移。  

区别:

301 redirect: 301 代表永久性转移(Permanently Moved )
302 redirect: 302 代表暂时性转移(Temporarily Moved )

14、说一下 tcp 粘包是怎么产生的?
• 发送方产生粘包

采用TCP协议传输数据的客户端与服务器双方在连接不断开的情况下,可以一直传输数据;
但当发送的数据包过小时,那么TCP协议默认的会启用Nagle算法[ˈneɪgəl],将这些较小的数据包进行合并发送。
这个合并过程就是在发送缓冲区中进行的,也就是说数据发送出来它已经是粘包的状态了。

• 接收方产生粘包

接收方采用TCP协议接收数据时程序中调用的读取数据函数不能及时的把缓冲区中的数据拿出来,
而下一个数据又放入缓冲区,等我们读取数据时就是一个粘包。(放数据的速度 > 应用层拿数据速度) 

15、get 和 post 请求有哪些区别?

get和post是HTTP请求的两种基本方法,本质上来说并无区别,底层实现都是基于TCP/IP协议。

最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留

GET请求刷新浏览器或回退时没有影响,POST回退时会重新提交数据请求

16、如何实现跨域?

• JSONP跨域

JSONP(JSON with Padding)是数据格式JSON的一种“使用模式”,可以让网页从别的网域要数据。

• CORS

Cross-Origin Resource Sharing(CORS)跨域资源共享是一份浏览器技术的规范,
提供了 Web 服务从不同域传来沙盒脚本的方法,以避开浏览器的同源策略,确保安全的跨域数据传输。