《计算机网络》非TCP/IP的笔记

1.Http和Https的区别

Http协议运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份;Https是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。二者之间存在如下不同:(是非对称的加密)

  1. 端口不同:Http与Http使用不同的连接方式,用的端口也不一样,前者是80,后者是443;
  2. 资源消耗:和HTTP通信相比,Https通信会由于加减密处理消耗更多的CPU和内存资源;
  3. 开销:Https通信需要证书,而证书一般需要向认证机构购买;

2.Http中常见状态码

  • 200 OK:表示从客户端发送给服务器的请求被正常处理并返回。
  • 204 No Content:表示客户端发送给客户端的请求得到了成功处理。
  • 301 Moved Permanently:永久性重定向,表示请求的资源被分配了新的URL,之后应使用更改的URL。
  • 302 Found:临时性重定向,表示请求的资源被分配了新的URL,希望本次访问使用新的URL。
  • 303 See Other:表示请求的资源被分配了新的URL,应使用GET方法定向获取请求的资源。与302的区别是303明确表示客户端应当采用GET方式获取资源。
  • 400 Bad Request:表示请求报文中存在语法错误。
  • 401 Unauthorized:未经许可,需要通过HTTP认证。
  • 403 Forbidden:服务器拒绝该次访问。
  • 404 Not Found:表示服务器上无法找到请求的资源。
  • 500 Inter Server Error:表示服务器在执行请求时发生了错误,也有可能是web应用存在的bug或某些临时的错误时。
  • 503 Server Unavailable:表示服务器暂时处于超负载或正在进行停机维护,无法处理请求。

1开头表示正在受理请求,2开头是成功处理,3开头是重定向,4是客户端出问题,5是服务器出问题。

3.HTTP中的长连接与短连接

在HTTP/1.0中,默认使用的是短连接。即浏览器和服务器每进行一次HTTP操作,就会建立一次连接,任务结束就断开连接。

在HTTP/1.1起,默认使用长连接。用以保持连接特性。使用长连接的情况下,当某个网页打开完毕之后,客户端和服务器之间的TCP连接不会关闭,如果客户端再次访问该服务器上的网页,会使用上一次已经建立的连接。长连接不是永久保持连接,它有一个保持时间。
图片说明

4.HTTP1.0和HTTP1.1的区别

  1. 长连接,HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive。在HTTP1.0中默认是使用短连接的,也就是说每一次请求都要建立起一次连接。
  2. 缓存处理:在HTTP1.0中主要使用了If-Modified-Since 和 Expires,而在http1.1中出现了跟多的缓存控制策略,例如Entity-tag、If-Unmodified-Since、If-Match、If-None-Match。
  3. 带宽优化以及网络连接的使用:在1.0中,存在着一些带宽浪费,譬如,一些用户只想请求某个对象的一部分内容,而服务器却将整个内容都发送了过来,并且不支持断点续传功能,而1.1在请求头部引入了range头,它允许请求资源的某个部分,返回码为206(Partial Content),此种做法方便了开发者调试以及合理的利用带宽资源。
  4. 错误状态响应码,在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

5.输入一个URL,会发生什么。

第一步:查找URL所对应的IP地址

浏览器首先会看自己缓存中有没有对应的ip地址,如果有的话就直接去访问;如果没有 浏览器会去查看本地的hosts文件,看看有没有和这个URL对应的ip地址,如果有的话就直接用, 如果本地的hosts 文件没有能够找到对应的 ip 地址,浏览器会发出一个 DNS请求到本地DNS服务器 ,本地DNS服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果。如果没有,本地DNS服务器还要向DNS根服务器进行查询。根DNS服务器没有记录具体的域名和IP地址的对应关系,而是告诉本地DNS服务器,你可以到域服务器上去继续查询,并给出域服务器的地址 域服务器最终会返回给本地的DNS服务器一个具体的ip地址;然后本地的DNS服务器把这个具体的ip地址返回给浏览器,并且他自己也会把这个url请求对应的ip保存在自己本地。

第二步 :浏览器与目标服务器建立TCP连接

  1. 主机浏览器通过DNS解析得到了目标服务器的IP地址后,与服务器建立TCP连接。

  2. TCP3次握手连接:浏览器所在的客户机向服务器发出连接请求报文(SYN标志为1);服务器接收报文后,同意建立连接,向客户机发出确认报文(SYN,ACK标志位均为1);客户机接收到确认报文后,再次向服务器发出报文,确认已接收到确认报文;此处客户机与服务器之间的TCP连接建立完成,开始通信。

第三步:浏览器通过http协议发送请求

浏览器向主机发起一个HTTP-GET方法报文请求。请求中包含访问的URL。

第四步:某些服务会做永久重定向响应

对于大型网站存在多个主机站点,了负载均衡或者导入流量,提高SEO排名,往往不会直接返回请求页面,而是重定向。返回的状态码就不是200OK,而是301,302以3开头的重定向码,浏览器在获取了重定向响应后,在响应报文中Location项找到重定向地址,浏览器重新第一步访问即可。

重定向的作用:重定向是为了负载均衡或者导入流量,提高SEO排名。利用一个前端服务器接受请求,然后负载到不同的主机上,可以大大提高站点的业务并发处理能力;重定向也可将多个域名的访问,集中到一个站点;由于baidu.comwww.baidu.com会被搜索引擎认为是两个网站,照成每个的链接数都会减少从而降低排名,永久重定向会将两个地址关联起来,搜索引擎会认为是同一个网站。

第五步:浏览器跟踪重定向地址

当浏览器知道了重定向后最终的访问地址之后,重新发送一个http请求,发送内容同上。

第七步:服务器处理请求

服务器接收到获取请求,然后处理并返回一个响应。

第八步:服务器发出一个HTML响应

返回状态码200 OK,表示服务器可以响应请求,返回报文,由于在报头中Content-type为“text/html”,浏览器以HTML形式呈现,而不是下载文件。

第九步:释放TCP连接

  1. 浏览器所在主机向服务器发出连接释放报文,然后停止发送数据;

  2. 服务器接收到释放报文后发出确认报文,然后将服务器上未传送完的数据发送完;

  3. 服务器数据传输完毕后,向客户机发送连接释放报文;

  4. 客户机接收到报文后,发出确认,然后等待一段时间后,释放TCP连接;

第十步:浏览器显示页面

在浏览器没有完整接受全部HTML文档时,它就已经开始显示这个页面了,浏览器接收到返回的数据包,根据浏览器的渲染机制对相应的数据进行渲染。渲染后的数据,进行相应的页面呈现和脚步的交互。

第十一步:浏览器发送获取嵌入在HTML中的其他内容

比如一些样式文件,图片url,js文件url等,浏览器会通过这些url重新发送请求,请求过程依然是HTML读取类似的过程,查询域名,发送请求,重定向等。不过这些静态文件是可以缓存到浏览器中的,有时访问这些文件不需要通过服务器,直接从缓存中取。某些网站也会使用第三方CDN进行托管这些静态文件。

6.GET和POST区别

GET请求的数据会附在URL之后,即将请求数据放置在HTTP报文的 请求头 中,而POST请求会把提交的数据则放置在是HTTP请求报文的 请求体 中。因此相比之下,POST更安全,因为数据不可见。

Get请求提交的url中的数据最多只能是2048字节,这个限制是浏览器或者服务器给添加的,http协议并没有对url长度进行限制,目的是为了保证服务器和浏览器能够正常运行,防止有人恶意发送请求。Post请求则没有大小限制。

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

7.什么是对称加密与非对称加密

对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;

而非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。

由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,非常的慢。

8.Session、Cookie的区别

HTTP协议本身是无状态的。什么是无状态呢,即服务器无法判断用户身份。

什么是cookie
cookie是由Web服务器保存在用户浏览器上的小文件(key-value格式),包含用户相关的信息。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户身份。

什么是session
session是依赖Cookie实现的。session是服务器端对象
session 是浏览器和服务器会话过程中,服务器分配的一块储存空间。服务器默认为浏览器在cookie中设置 sessionid,浏览器在向服务器请求过程中传输 cookie 包含 sessionid ,服务器根据 sessionid 获取出会话中存储的信息,然后确定会话的身份信息。

cookie与session区别

  • 存储位置与安全性:cookie数据存放在客户端上,安全性较差,session数据放在服务器上,安全性相对更高;
  • 存储空间:单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,session无此限制
  • 占用服务器资源:session一定时间内保存在服务器上,当访问增多,占用服务器性能,考虑到服务器性能方面,应当使用cookie。

Cookie 与 Session,一般认为是两个独立的东西,Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案。

但为什么禁用Cookie就不能得到Session呢?因为Session是用Session ID来确定当前对话所对应的服务器Session,而Session ID是通过Cookie来传递的,禁用Cookie相当于失去了Session ID,也就得不到Session了。

假定用户关闭Cookie的情况下使用Session,其实现途径有以下几种:

  1. 手动通过URL传值、隐藏表单传递Session ID。
  2. 用文件、数据库等形式保存Session ID,在跨页过程中手动调用。

9.URI和URL的区别

URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的

URI一般由三部组成:

  • 访问资源的命名机制
  • 存放资源的主机名
  • 资源自身的名称,由路径表示,着重强调于资源。

URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何操作这个资源。URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。

URL一般由三部组成:

  • 协议(或称为服务方式)
  • 存有该资源的主机IP地址(有时也包括端口号)
  • 主机资源的具体地址。如目录和文件名等

10.应用层DNS查域名

图片说明

有了需求后,首先问本地,本地不知道则问根,根也不懂,就写个推荐信让你去问顶级域名服务器,顶级也不知道,写推荐信让你去问权限,到权限的时候一般的都能查到,除非是个错的。

11 URL的组成

URL(Uniform Resource Locator) ,统一资源定位符,能够对因特网的资源进行定位。
URL 一般有四部分组成: <协议>://< 主机 >:< 端口 >/< 路径 >
现在最常用的 <协议> 为 http 协议。
<主机> 是指主机在因特网上的域名。(ip 地址 + 子网掩码 = 主机号)
http 协议的默认 <端口> 为 80(可以省略)。
<路径> 是指要活的的文件的路径。

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
逆流河上万仙退:我觉得佬没必要 学历在这里 去了也不会对履历有很大提升 只是有可能让自己更熟练 是我的话会更倾向于找暑期或者中大厂日常
查看13道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务