计算机网络

一. OSI七层网络模型

在这里插入图片描述

二.IPv4和子网掩码

2.1 IP地址组成:

IP地址是由4组8位二进制组成的,每一组8位二进制都由一个.分隔开 ; 即: XXXXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX;
转化为十进制它的范围也就是 0.0.0.0 ----- 255.255.255.255 之间了

IP地址由两个部分组成,分别是网络号和主机号; IP地址 : 网络号 + 主机号

2.2 网络号和主机号分别是干什么的呢?

假设这里有4大洲,每一个洲都有各自的IP地址,我们随便看一个洲(以南瞻部洲为例) 里面的IP地址都是以130.20.11开头,只有后面的数字不同,其他三个洲也是一样,那么前面相同的部分就是网络号了,后面不同的部分就是主机号了.每个洲都有各自的网络号来代表这整个洲属于同一个网络区域,每个洲里面的不同地址都代表了不同的主机号来区分,这样层级的划分方便管理.当一个信息在网络中传输,首先会通过网络号找到该网络对应的地址,然后通过主机号找到对应的主机.

在这里插入图片描述

2.3 IP地址分类:

IP地址不一定是从中间下去,一半为网络号,另一半为主机号的;它是有分类的

在这里插入图片描述

IP地址分为A,B,C,D,E五类,除了D,E是特殊类,我们吧焦点放到每一类的网络数和主机数上,我们可以看出每一类的主机数和网络数要么很多,要么很少,主机数也是一样的情况.

在这里插入图片描述
假设南瞻部洲被分配了一个C类网络号: 195.10.10.X,理论上这个地址可以有256个主机数(从 195.10.10.0 一直到 192.10.10.255),但是如果南瞻部洲实际上需要257个地址,那么我们就需要一个新的C类地址分配给南瞻部洲,这就意味着理论上就会浪费255个地址,因为新的C类地址也是同样分配了256个主机数.

我们在看看北俱庐州,这个洲也被分配了一个C类网络号 : 195.10.20.X,同样也可以有256个主机数,但是这个洲只需要用到一个IP地址,那么给这个洲256个主机地址明显太多了,为了解决简单分类而导致的IP分配不合理,就诞生了子网掩码.
在这里插入图片描述

2.4 子网掩码

假设我们现在为东胜神州分配了一个C类地址 192.168.0.X,但是东胜神州只有4台主机,只需要4个不同的IP,多了浪费,少了得补.我们知道这个X的范围可以是0到255,假设东胜神州的4台主机地址为0,1,2,3,剩下的4到255的地址都不要,这样我们就必须用一种方法来表示这4个IP地址同属于一个网络因此我们就需要用到子网掩码了,子网掩码其实就是为了划分网络号和主机号的.

那么子网掩码怎么表示呢?

要表示192.168.0.0 到 192.168.0.3 的IP地址,先把这些十进制的IP地址转化为二进制,192.168.0是不变的,因为它是一定要用来作为网络号的部分,因此我们用二进制的1来表示锁定前面3个部分的二进制.我们可以看到剩下8位的二进制前面的6位都是相同的,都是0,我们也用二进制的1进行锁定;剩下的两位不需要锁定,也不能锁定了,因为剩下的就是主机号了.

用0来表示不锁定.现在有1锁定,0不锁定结合一起就非常的清晰了.比如192.168.0.4就肯定不是同一个网络的,将它转化为二进制,从锁定的位数来看明显少了一位,因此不是同一个网络.

在这里插入图片描述
将锁定的二进制的转化为10进制,即 255.255.255.252;那么这个 255.255.255.252就是子网掩码了.我们就可以吧这个子网掩码和东胜神州的IP地址放在一起这样别人看到就知道网络号和主机号的界限在哪了不过这种子网掩码的写起来很长,因此可以用一种叫做CIDR的方法来表示,我们可以看到子网掩码的二进制有30个1,因此可以用/30来表示,也就是 192.168.0.0/30 就可以表示这4个主机号在同一个网络里面了.要注意的是最后的一位的0不写1,2或者3而是用起始的0来做表示.
在这里插入图片描述

知道子网掩码的原理后,我们就可以根据IP地址和子网掩码来区分网络号和主机号了.我们上面所说的都是IPv4,即使有了分类和子网掩码来进行IP的划分,但面对发展迅猛的互联网来说,地址肯定是不够的于是就有了IPv6.

三.IPv6

我们看到的IPv4地址是由4组0—255的十进制数也就是4组8位的二进制数(一共32位)组成的.我们知道计算机的底层是二进制,因此IPv6实际上也是由二进制组成的,IPv6从IPv4的32位一下子增加到了128位.下面这一串二进制数就是IPv6.

在这里插入图片描述

IPv6中间是用:将16 位的二进制数分隔开也就是:

XXXXXXXXXXXXXXXX : XXXXXXXXXXXXXXXX : XXXXXXXXXXXXXXXX : XXXXXXXXXXXXXXXX : XXXXXXXXXXXXXXXX : XXXXXXXXXXXXXXXX : XXXXXXXXXXXXXXXX : XXXXXXXXXXXXXXXX ;

IPv4 和 IPv6 首部对比:

蓝色表示不变,橙色表示更名,灰色表示取消,粉色表示新增.
在这里插入图片描述

我们知道IPv4是由网络号和主机号组成的,但问题是很难看出那个是网络号,那个是主机号.IPv6就很简单,直接对半切,前64位是网络部分,后64位不叫主机号了,而是叫做接口ID.很简单,因为一个主机可能有多个接口,
每个接口都要有独自的IP地址.既然有网络和主机部分,也就是说这个地址可以被路由器转发.因为IPv6的地址足够多可以使用,因此IPv6没有子网掩码.
在这里插入图片描述

四.TCP三次握手和四次挥手

三次握手:

在这里插入图片描述
四次挥手:

在这里插入图片描述

五.HTTP和HTTPS

基本概念

HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。
HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。
HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

HTTP 与 HTTPS 区别

HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。

使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。

HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。

http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

六.HTTP状态码

状态码类别:

在这里插入图片描述

常用状态码

100:这个状态码是告诉客户端应该继续发送请求,这个临时响应是用来通知客户端的,部分的请求服务器已经接受,但是客户端应继续发送求请求的剩余部分,如果请求已经完成,就忽略这个响应,而且服务器会在请求完成后向客户发送一个最终的结果

200:这个是最常见的http状态码,表示服务器已经成功接受请求,并将返回客户端所请求的最终结果

202:表示服务器已经接受了请求,但是还没有处理,而且这个请求最终会不会处理还不确定

204:服务器成功处理了请求,但没有返回任何实体内容 ,可能会返回新的头部元信息

206 : 客户端请求一部分资源,服务端成功响应,返回一范围资源

301:客户端请求的网页已经永久移动到新的位置,当链接发生变化时,返回301代码告诉客户端链接的变化,客户端保存新的链接,并向新的链接发出请求,已返回请求结果

404:请求失败,客户端请求的资源没有找到或者是不存在

500:服务器遇到未知的错误,导致无法完成客户端当前的请求。

503:服务器由于临时的服务器过载或者是维护,无法解决当前的请求,

七.Get请求和Post请求的区别

GET 和 POST 是什么?HTTP 协议中的两种发送请求的方法。

Get 和 Post 的区别:

GET 在浏览器回退时是无害的,而 POST 会再次提交请求。

GET 产生的 URL 地址可以被 Bookmark,而 POST 不可以。

GET 请求会被浏览器主动 cache,而 POST 不会,除非手动设置。

GET 请求只能进行 url 编码,而 POST 支持多种编码方式。

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

GET 请求在 URL 中传送的参数是有长度限制的,而 POST 么有。

对参数的数据类型,GET 只接受 ASCII 字符,而 POST 没有限制。

GET 比 POST 更不安全,因为参数直接暴露在 URL 上,所以不能用来传递敏感信息。

GET 参数通过 URL 传递,POST 放在 Request body 中。

为什么Get请求比Post请求快?

简单的说:

GET 产生一个 TCP 数据包;POST 产生两个 TCP 数据包。

长的说:

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

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

我们吧请求比作汽车送货,也就是说:

   GET 请求只需要汽车跑一趟就把货送到了,
   POST 请求得跑两趟,第一趟,先去和服务器打个招呼 “嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。
   
因为 POST 需要两步,时间上消耗的要多一点,看起来 GET 比 POST 更有效。

post请求的过程:
(1)浏览器请求tcp连接(第一次握手)
(2)服务器答应进行tcp连接(第二次握手)
(3)浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
(4)服务器返回100 Continue响应
(5)浏览器发送数据
(6)服务器返回200 OK响应

get请求的过程:
(1)浏览器请求tcp连接(第一次握手)
(2)服务器答应进行tcp连接(第二次握手)
(3)浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
(4)服务器返回200 OK响应

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值