计算机网络方面

1.TCP与UDP的区别

TCP是面向连接的;UDP是无连接的,即发送数据前不需要建立连接

TCP提供可靠的服务,通过TCP传输的数据无差错、不丢失、不重复且按顺序到达;UDP尽最大努力交付,且不保证可靠交付

TCP面向字节流;UDP面向报文

  TCP有一个发送缓冲区,当应用程序传送的数据块过长时,TCP就可以把它划分短一些再传送,如果应用程序一次只发送一个字节,TCP也可以等到积累足够多的字节后再构成报文段发送出去;

  对于UDP,应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并。

TCP数据传输慢;UDP数据传输快

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

3、TCP三次握手

4、OSI七层模型与ICP/IP五层模型

OSI(Open System Interconnect)开放式系统互联

物理层:常用设备有集线器、中继器、网线等都是物理层的传输介质

网络层:IP

传输层:TCP、UDP

应用层:HTTP、HTTPS、FTP、POP3、SMTP

5、HTTP与HTTPS

HTTPS是加密的HTTP,HTTPS并不是一个新协议,而是HTTP+SSL,原本http与tcp直接通信,加上ssl后,就变成http先和ssl通信,再由ssl与TCP通信,相当于ssl嵌在了http与tcp之间

HTTP协议通常承载于TCP之上,在HTTP和TCP之间添加一个安全协议层(SSL或TSL),这个时候就成了HTTPS。

HTTP默认端口是80,HTTPS默认端口是443。

HTTP的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。

 

为什么HTTPS安全?

因为网络请求需要中间很多的服务器路由的转发,之间节点都可能篡改信息,而如果使用HTTPS,密钥只有自己和终点站才有。HTTPS之所以安全,是因为它利用SSL/TSL协议传输。它包含证书,卸载,流量转发,负载均衡,页面适配,refer传递等,保障了传输过程中的安全性。

HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。

6、进程与线程

进程是系统分配和调度的一个独立单位,线程是进程的一个实体,是cpu调度和分派的基本单位。

一个进程由一个或多个线程组成,不同的线程可以共享进程所拥有的全部资源。

一个线程可以创建和撤销另一个线程;同一进程中的多个线程可以并发执行。

 

7、HTTP与TCP的区别

建立一个TCP连接需要经过“三次握手”

HTTP协议即超文本传输协议,是建立在TCP协议之上的一种应用。

HTTP连接显著的特点是客户端发送的每次请求都需要服务端回送响应,每次请求结束之后会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。

  在http1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求之后,会自动释放连接。

  在http1.1中,在一次连接中可以处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再进行下一个请求。

由于http在每次请求结束后都会主动释放连接,因此http连接是一种“短连接”,无状态的连接。

区别:

TCP就是单纯建立连接,不涉及我们需要请求的实际数据,简单的传输,而http是用来收发数据的。TCP是传输层协议,定义数据传输和连接方式的规范。

HTTP是应用层协议,定义的是传输数据的内容的规范。由请求和相应构成,是一个无状态的协议。HTTP永远都是由客户端发起请求,服务器返回请求,这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。

8、死锁

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信造成的一种阻塞现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态。

产生死锁的四个必要条件:(只要一个不满足就不会死锁)

(1)互斥条件。即某个资源在一段时间内只能由一个进程所有,不能同时被两个或两个以上的进程所有。

(2)请求和保持条件。进程获得一定资源后,又对其他资源发出请求,但是该资源可能被其他进程占用,此时请求阻塞,但是又对自己占有的资源保持不放。

(3)不可剥夺条件。是指进程以获得的资源,在未完成使用之前,不可被剥夺,只能使用完自己释放。

(4)环路等待条件。若干进程之间形成一种首尾相接的循环等待资源关系。

9、get和post的区别

(1)安全性。get请求的数据显示在url上,而post把数据放在http的包体内(request body),所以post比get更加安全。

(2)长度限制。get提交的数据最大是2k个字节(因为浏览器对url的长度有限制),而post没有限制,post发送的数据更大。

(3)get在回退按钮或刷新时是无害的,而post会重新提交数据。

(4)get产生的url地址可以收藏为书签,而post不能

(5)get请求会被浏览器主动生成缓存,而post不会,除非手动设置

(6)编码类型。get请求只能进行url编码,而post支持多种编码方式。

  get:application/x-www-form-urlencoded

  post:application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。

(7)get请求参数会被完整保留在浏览器历史纪录中,而post中的参数不会被保留。

(8)get只接受ASCLL字符的参数的数据类型,而post没有限制。

(9)get请求,浏览器会把请求头和请求body一起发送出去,服务器响应200;而post请求,浏览器先发送请求头,当服务器响应100 continue时,浏览器才会发送request body。

(9)get比post快。

  •  post需要在请求的body部分包含数据,如content-type。
  •  post在真正接收数据之前会先将请求头发送给服务器进行确认,然后才发送真正数据。
  •  get会将数据缓存起来,而post不会

(10)post用于修改和写入数据,get一般用于搜索排序和筛选,目的是资源的获取。

 

10、HTTP1.0、HTTP1.1、HTTP2.0的关系和区别

HTTP1.0与HTTP1.1的区别

(1)长连接。

  HTTP1.0每次请求都需要与服务器建立一个TCP连接,服务器处理完成之后立即断开连接,服务器不跟踪每个客户端的请求(无状态)。

  HTTP1.0默认使用Connection:close,在HTTP1.1中默认使用Connection:keep-alive,支持长连接,避免了连接建立和释放的开销。

(2)缓存处理。

  HTTP1.0中主要使用header里的if-Modified-Since,Expires来做为缓存判断的标准。 1.0中采用的是绝对时间。

  HTTP1.1则引入了更多的缓存控制策略,如Entity tag,If-None-Match等更多可供选择的缓存头来控制缓存策略。eTag是资源的唯一标识

(3)节约带宽    100状态码

  HTTP1.1加入了新的状态码100(continue):允许客户端在发送请求消息body之前先用request header来试探一下服务器,看服务器要不要接收request body,再决定要不要发送request body。

  HTTP1.1客户端事先发送一个只带头域的请求,如果服务器因为权限拒绝了请求,就返回响应码401(Unauthorized),如果服务器接收此请求就返回响应码100,客户端就可以继续发送带实体的完整请求了。

(4)host字段

  在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此请求消息中的URL并没有传递主机名,但随着虚拟主机技术的发展,一台物理服务器上可以存在多个虚拟主机,并且它们共享一个IP。

  HTTP1.1的请求消息和相应消息都应支持Host头域,且请求消息中如果没有host头域会报告一个错误(400 Bad Request)。

 

转载于:https://www.cnblogs.com/xiaoan0705/p/10450707.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值