linux之网络基础

目录

 

一、网络开发的架构

我们主要要了解5层:

1.物理连接层:

2.数据链路层("以太网协议"!):

3.网络层(IP协议)

4.传输层(端口协议)

5.应用层(HTTP协议,FTP协议):

 二、http协议原理

 用户访问网站的流程:

 三、DNS服务

 四、TCP的三次握手,四次挥手

三次握手(建立连接):

四次挥手:

 五、静态与动态网页

1、静态网络资源

2、动态网络资源

3、伪静态服务

4、生产环境web结构优化

六、网络流量度量术语

1、IP

2、PV(page view)

3、UV(unique visitor)


一、网络开发的架构

首先要讲一下网络开发的架构,分为两个:

C/S架构:(client--server)    即客户端——服务端

B/S架构:(browser-server)    即浏览器——服务端

B/S本质上其实也是属于C/S架构,我们看着好像app很多,C/S结构比较火,其实不然,看看微信小程序,支付宝的第三方接口,就知道B/S才是比较火的了。

服务端就是24h不间断提供服务的,而客户端就是我们的硬设。

要想实现网络通信,第一个必要条件就是物理连接介质。而这必须达到统一

不同国家的人交流需要有一个公共的语言作为媒介。计算机与计算机要想实现远程通信,光有物理连接介质是不够, 他们也需要一个共同的标准,这个标准就是一系列的网络协议。

 

 

数据在各层的名称
7 应用层         程序
6 表示层         字符和字
5 会话层         
4 传输层         段
3 网络层         数据包
2 数据链路层     帧
1 物理层         比特

每层的协议

应用层:FTP/SMTP/DNS/Telnet --应用进程间的通信和交互的规则
传输层:传输控制协议TCP       用户数据报协议UDP --负责向两台主机进程之间的通信提供通用的数据传输服务
网际互连层:网际协议IP    互联网组管理协议IGMP     互联网控制报文协议ICMP(ping)
网络接口层:地址解析协议ARP

我们主要要了解5层:

1.物理连接层:


   实现计算机之间物理连接,传输的数据都是0101的二进制
   电信号工作原理:电只有高低电平

2.数据链路层("以太网协议"!):


   1.规定了二进制数据的分组方式
   2.规定了只要是接入物联网的计算机,都必须有一块网卡!
   网卡上面刻有世界唯一的编号:
      每块网卡出厂时都被烧制上一个世界唯一的mac地址,
      长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)
      我们管网卡上刻有的编号叫电脑的>>>mac地址
   ----->上面的两个规定其实就是 "以太网协议"!

基于以太网协议通信:通信基本靠吼!!!
弊端:广播风暴

交换机:如果没有交换机,你的电脑就变成了马蜂窝,有了交换机之后,所有的电脑只需要有一个网卡连接交换机
即可实现多台电脑之间物理连接

路由器:

它是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。

CISCO,广域网、公网互联需要路由器,路由器不转发私网地址。

路由器的实质是隔离广域网,是两个广域网之间信息互通,也就是使两个不同的网段之间互相连通

作用和特点说明:

路由协议的转发---整个数据在网络中传递的过程

数据转发---会维护一个路由表

作为网关---一般会在网络出口位置摆放一台路由器

广域网链路支持

3.网络层(IP协议)


   规定了计算机都必须有一个ip地址
      ip地址特点:点分十进制
      有两个版本ipv4和ipv6 为了能够兼容更多的计算机
      最小:0.0.0.0    
      最大:255.255.255.255
   IP协议可以跨局域网传输

   ip地址能够唯一标识互联网中独一无二的一台机器!

4.传输层(端口协议)


   TCP,UDP基于端口工作的协议!
   其实计算机之间通信其实是计算机上面的应用程序于应用之间的通信
   端口(port):唯一标识一台计算机上某一个基于网络通信的应用程序
   端口范围:0~65535(动态分配)
      注意:0~1024通常是归操作系统分配的端口号
      通常情况下,我们写的软件端口号建议起在8000之后
      flask框架默认端口5000
      django框架默认端口8000
      mysql数据库默认端口3306
      redis数据库默认端口6379
      FTP(文件传输协议):20(传输数据),21(传输控制信息)
           SSH(安全shell协议):22
           telnet(远程登录协议):23(禁止开启)
           DNS(域名系统):53
           http(超文本传输协议):80
           SMTP(简单邮件传输协议):25
           pop3(邮局协议3代):110
   注意:一台计算机上同一时间一个端口号只能被一个应用程序占用

小总结:
   IP地址:唯一标识全世界接入互联网的独一无二的机器
   port端口号:唯一标识一台计算机上的某一个应用程序
   ip+port :能够唯一标识全世界上独一无二的一台计算机上的某一个应用程序

补充:
   arp协议:根据ip地址解析mac地址

5.应用层(HTTP协议,FTP协议):

HTTP 请求/响应的步骤:

  ● 客户端连接到web服务器:HTTP 客户端与web服务器建立一个 TCP 连接;

  ● 客户端向服务器发起 HTTP 请求:通过已建立的TCP 连接,客户端向服务器发送一个请求报文;

  ● 服务器接收 HTTP 请求并返回 HTTP 响应:服务器解析请求,定位请求资源,服务器将资源副本写到 TCP 连接,由客户端读取;

  ● 释放 TCP 连接:若connection 模式为close,则服务器主动关闭TCP 连接,客户端被动关闭连接,释放TCP 连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

  ● 客户端浏览器解析HTML内容:客户端将服务器响应的 html 文本解析并显示;

例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:
  1、浏览器向DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
  2、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立 TCP 连接;
  3、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
  4、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
  5、释放 TCP 连接;
  6、浏览器将该 html 文本并显示内容;

 二、http协议原理

HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示等。

HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系

www默认端口80,加密的www服务应用https的默认端口是443,主要用于网银、支付等和钱相关的业务。

一次HTTP操作称为一个事务,其工作过程可分为四步:

1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。

2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。

3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

http状态码是用来表示Web服务器响应http请求状态的数字代码。每当web客户端向web服务器发送一个http请求时,web服务器都会返回一个状态响应代码,是一个三位数字代码,作用是告知web客户端此次的请求是否成功。

http1.1的状态码可分为5大类:

100-199 用于指定客户端相应的某些动作

200-299 用于表示请求成功

300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息

400-499 用于指出客户端的错误

500-599 用于指出服务器的错误

生产环境常见的状态码列表
200 - OK,服务器成功返回网页 
    - Standard response for successful HTTP requests.
301 - Moved Permanently(永久跳转),请求的网页已永久跳转到新位置。
    - This and all future requests should be directed to the given.
403 - Forbidden(禁止访问),服务器拒绝请求
    - forbidden request (matches a deny filter) => HTTP 403
    - The request was a legal request, but the server is refusing to respond to it.
404 - Not Found,服务器找不到请求的页面。
    - The requested resource could not be found but may be available again in the future.
500 - Internal Server Error(内部服务器错误)
    - internal error in haproxy => HTTP 500
    - A generic error message, given when no more specific message is suitable.
502 - Bad Gateway(坏的网关),一般是网关服务器请求后端服务时,后端服务没有按照http协议正确返回结果。
    - the server returned an invalid or incomplete response => HTTP 502
    - The server was acting as a gateway or proxy and received an invalid response from the upstream server.
503 - Service Unavailable(服务当前不可用),可能因为超载或停机维护。
    - no server was available to handle the request => HTTP 503
    - The server is currently unavailable (because it is overloaded or down for maintenance).
504 - Gateway Timeout(网关超时),一般是网关服务器请求后端服务时,后端服务没有在特定的时间内完成服务。
    - the server failed to reply in time => HTTP 504
    - The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.
更多:
一些常见HTTP状态码为:
200 – 服务器成功返回网页
404 – 请求的网页不存在
503 – 服务不可用
常见HTTP状态码大全
1xx(临时响应)
表示临时响应并需要请求者继续执行操作的状态代码。
代码 说明
http状态码 100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
http状态码 101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。
2xx (成功)
表示成功处理了请求的状态代码。
代码 说明
http状态码 200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
http状态码 201 (已创建) 请求成功并且服务器创建了新的资源。
http状态码 202 (已接受) 服务器已接受请求,但尚未处理。
http状态码 203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
http状态码 204 (无内容) 服务器成功处理了请求,但没有返回任何内容。
http状态码 205 (重置内容) 服务器成功处理了请求,但没有返回任何内容。
http状态码 206 (部分内容) 服务器成功处理了部分 GET 请求。
3xx (重定向)
表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。
代码 说明
http状态码 300 (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
http状态码 301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
http状态码 302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
http状态码 303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
http状态码 304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
http状态码 305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
http状态码 307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
4xx(请求错误)
这些状态代码表示请求可能出错,妨碍了服务器的处理。
代码 说明
http状态码 400 (错误请求) 服务器不理解请求的语法。
http状态码 401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
http状态码 403 (禁止) 服务器拒绝请求。
http状态码 404 (未找到) 服务器找不到请求的网页。
http状态码 405 (方法禁用) 禁用请求中指定的方法。
http状态码 406 (不接受) 无法使用请求的内容特性响应请求的网页。
http状态码 407 (需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
http状态码 408 (请求超时) 服务器等候请求时发生超时。
http状态码 409 (冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
http状态码 410 (已删除) 如果请求的资源已永久删除,服务器就会返回此响应。
http状态码 411 (需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。
http状态码 412 (未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。
http状态码 413 (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
http状态码 414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
http状态码 415 (不支持的媒体类型) 请求的格式不受请求页面的支持。
http状态码 416 (请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。
http状态码 417 (未满足期望值) 服务器未满足”期望”请求标头字段的要求。
5xx(服务器错误)
这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。
代码 说明
http状态码 500 (服务器内部错误) 服务器遇到错误,无法完成请求。
http状态码 501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
http状态码 502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
http状态码 503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
http状态码 504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
http状态码 505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

 用户访问网站的流程:

 三、DNS服务

DNS主要负责域名解析,称作A记录。也可以设置CNAME别名记录,这个别名解析功能经常被CDN加速服务商应用。还可以设置MX邮件记录,这个功能,在购买或搭建邮件服务时会被用到。还能设置PTR记录,反向解析,即把IP地址解析为对应的域名,和A记录的解析相反,邮件服务等业务中会用到。

 

 

dig +trace www.etiantian.com  --命令查看解析过程
查看windows客户端本地缓存的DNS解析记录命令为:
ipconfig /displaydns
清除windows客户端本地缓存的DNS解析记录命令为:
ipconfig /flushdns
windows下hosts文件位置:C:\windows\System32\drivers\etc\hosts
递归是重复调用模块自身实现循环
迭代是函数内某段代码实现循环
url--统一资源定位器,即网页访问地址
uri--统一资源标识符,包含url。除了网页地址,还有邮箱地址

 四、TCP的三次握手,四次挥手

三次握手(建立连接):

客户端发送连接请求给服务端,发送一个标识码syn

服务端接收到请求,然后返回给客户端一个验证字段ACK,同时发送一个连接请求syn

客户端接到连接请求,再向服务端发回一个ACK,这时双方就建立好了连接

四次挥手:

客户端-->发送FIN,请求断开连接-->服务端

服务端-->发送ACK-->客户端

服务端-->发送FIN,请求断开连接-->客户端

客户端-->发送ACK-->服务端

 五、静态与动态网页

1、静态网络资源

在网站设计中,纯粹html格式的网页(可以包含图片、视频、JS(前端功能实现)、CSS(样式)等)通常被称为静态网页。静态网页是指没有后台数据库,不含程序(php、jsp)和可交互的网页。

在高并发、高访问量的场景下做架构优化,涉及的关键环节就是把动态网页转成静态网页,而不直接请求数据库和动态服务器,并且可以把静态内容推送到前段缓存(或CDN)中提供服务,这样就可以提升用户体验,节约服务器和维护成本。

2、动态网络资源

动态网页的URL后缀不是.htm,.html,.shtml,.xml,.js,.css等静态网页的常见后缀扩展名格式,而是以.asp,.aspx,.php,.cgi等作为后缀,并且一般会有“?,&”,大多情况下后端都需要数据库支持。

网页一般以数据库为基础,大大降低了网站维护的工作量;动态网页技术可以实现更多的功能,如用户注册、用户登录、在线调查、投票、用户管理、订单管理、发博文等;动态网页并不是独立存在于服务器上的网页文件,当用户请求服务器上的动态程序时,服务器解析这些程序并可能读取数据库返回一个完整的网页内容。会消耗大量的cpu、内存和I/O等资源,访问效率远不如静态网页。

在高并发场景中,应尽可能把动态转为静态网页提供服务。

 

3、伪静态服务

伪静态就是通过某些技术(rewrite)把动态网页的url地址伪装成静态url。此技术并未提升性能,甚至会使得性能下降。唯一的好处就是让搜索引擎收录网站内容,提升用户访问体验。

 

4、生产环境web结构优化

1、新闻门户业务

新闻网站的特点是一旦发布完成,几乎不会改动网页内容。因此比较简单

a、程序要支持发布动态内容转成静态功能

b、运营编辑人员发布新闻网页后,后台程序立刻将动态网页生成静态文件

c、运维人员通过发布或事件触发把运营编辑生成的静态网页发布到事先搭建好的公司缓存集群服务器上,或把静态内容同步到购买的全国所有CDN服务器节点上,然后再提供给用户浏览。

2、视频网站业务

以优酷为例。用户在上传视频时,需要经历转码-审核的过程(1h左右),一些热点视频也可能提前推送同步到CDN的核心节点或全国所有的CDN服务器节点,用户访问时才会更快。

常见的www服务软件:

常用来处理静态服务的软件
apache:中小型web服务的主流  http://httpd.apache.org/download.cgi
nginx:大型网站web服务主流。nginx的分支tengine也在高速发展
lighttpd:静态解析效率高
常用来处理动态服务的软件
PHP:动态网页语言php的解析容器
tomcat:中小企业web服务主流,互联网java容器主流
resin:大型动态服务主流,互联网java容器主流	   http://caucho.com/products/resin/download
IIS:微软windows下的web服务软件

 

六、网络流量度量术语

1、IP

这里指独立IP数,它是指不同IP地址的计算机访问网站时被计算的总次数。独立IP是衡量一个网站流量的重要指标,一般为一天一统计。重复访问只记录一次。

通过独立IP数度量网站访问量是不太准确的,因为国内的企业、学校等大都是用nat上网的,一个独立的IP背后可能是很多个客户端访问。

2、PV(page view)

即页面浏览。

3、UV(unique visitor)

独立访客。同一台客户端(pc或移动端)访问网站被计算为一个访客一天内只计算一次,一般以cookie等技术作为统计依据。

但一台客户端也可能多人使用。

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值