共计 5606 个字符,预计需要花费 15 分钟才能阅读完成。
Android 计算机网络
一:计算机网络体系结构
OSI 七层协定:从上到下:应用层 –> 表示层 –> 会话层 –> 传输层 –> 网络层 –> 数据链路层 –> 物理层
TCP/IP 四层协定:从上到下:应用层 –> 传输层 –> 网络层 –> 网络接口层
TCP/IP 五层协定:从上到下:应用层 –> 传输层 –> 网络层 –> 数据链路层 –> 物理层
基于 TCP/IP 网络层级关系
1. 应用层
为操作系统或网络应用程序提供拜访网络的接口。
(1)数据传输根本单位为报文;
(2)蕴含的次要协定:FTP(文件传送协定),Telnet(近程登录协定),DNS(域名解析协定),SMTP(邮件传送协定),POP3 协定 (邮局协定),HTTP(超文本传输协定) 等
(一)FTP(文件传输协定)
FTP 协定蕴含两个局部,其一为 FTP 服务器,其二为 FTP 客户端。其中 FTP 服务器用来存储文件,用户能够应用 FTP 客户端通过 FTP 协定拜访位于 FTP 服务器上的资源。在开发网站的时候,通常利用 FTP 协定把网页或程序传到 Web 服务器上。此外,因为 FTP 传输效率十分高,在网络上传输大的文件时,个别也采纳该协定。
FTP 协定应用 TCP 端口中的 20 和 21 这两个端口,其中 20 用于传输数据,21 用于传输管制信息
格局:
FTP 地址如下:
ftp:// 用户名:明码 @FTP 服务器 IP 或域名:FTP 命令端口 / 门路 / 文件名
ftp://ruanruan:123456@10.0.11.11/klt/111.zip
具体:我具体当初应用就是应用一些 FileZilla 客户端去去申请 FTP 服务端的一些文件
(二)Telnet(近程登录服务协定)
它容许用户 (Telnet 客户端) 通过一个协商过程来与一个近程设施进行通信。
Telnet 协定是基于网络虚构终端 NVT(Network Virtual Termina1)的实现,
NVT 是虚构设施,连贯单方 (客户机和服务器) 都必须把它们的物理终端和 NVT 进行互相转换。
(三)DNS(域名解析服务协定)
DNS 协定:是将域名转成 IP 地址(也能够将 IP 地址转成相应的域名地址)
咱们都晓得,TCP/IP 中应用的是 IP 地址和端口号来确定网络上某一台主机上的某一个程序,未免有人有疑难,为什么不必域名来间接进行通信呢?
1. 因为 IP 地址是固定长度的,IPv4 是 32 位,IPv6 是 128 位,而域名是变长的,不便于计算机解决。
2.IP 地址对于用户来说不不便记忆,但域名便于用户应用,例如 www.baidu.com 这是百度的域名。
3. 总结一点就是 IP 地址是面向主机的,而域名则是面向用户的
hosts 文件
域名和 IP 的对应关系保留在一个叫 hosts 文件中。
最后,通过互联网信息中心来治理这个文件,如果有一个新的计算机想接入网络,或者某个计算 IP 变更都须要到信息中心申请变更 hosts 文件。其余计算机也须要定期更新,能力上网。
然而这样太麻烦了,就呈现了 DNS 零碎。
DNS 零碎
一个组织的系统管理机构, 保护零碎内的每个主机的 IP 和主机名的对应关系
如果新计算机接入网络,将这个信息注册到数据库中
用户输出域名的时候,会主动查问 DNS 服务器,由 DNS 服务器检索数据库,失去对应的 IP 地址
咱们能够通过命令查看本人的 hosts 文件:
域名服务次要是基于 UDP 实现的,服务器的端口号为 53。
eg : 咱们相熟的,www.baidu.com
- com: 一级域名. 示意这是一个企业域名。同级的还有“net”(网络提供商),“org”(⾮非盈利组织) 等。
- baidu: 二级域名,指公司名。
-
www: 只是一种习惯用法。
域名的分级
域名能够划分为各个子域,子域还能够持续划分为子域的子域,这样就造成了顶级域、二级域、三级域等。
其中顶级域名分为:国家顶级域名、通用顶级域名、反向域名国家顶级域名 中国:cn,美国:us,英国 uk.. 通用顶级域名 com 公司企业,edu 教育机构,gov 政府部门,int 国内组织,mil 军事部门,net 网络,org 非盈利组织… 反向域名 arpa,用于 PTR 查问(IP 地址转换为域名) (四):HTTP(超文本传输协定)
HTTP 构建于 TCP/IP 协定上,默认端口号是 80
HTTP 是无连贯无状态的
无连贯 的含意是 限度每次连贯只解决一个申请。服务器解决完客户的申请,并收到客户的应答后,即断开连接。采纳这种形式能够节俭传输工夫。起初应用了 Keep-Alive 技术。
无状态 是指 协定对于事务处理没有记忆能力,服务器不晓得客户端是什么状态。即咱们给服务器发送 HTTP 申请之后,服务器依据申请,会给咱们发送数据过去,然而,发送完,不会记录任何信息。
HTTP 协定这种个性有长处也有毛病,长处在于解放了服务器,每一次申请“点到为止”不会造成不必要连贯占用,毛病在于每次申请会传输大量反复的内容信息。
为了解决 HTTP 无状态的毛病,两种用于放弃 HTTP 连贯状态的技术就应运而生了,一个是 Cookie,而另一个则是 Session。Cookie 在客户端记录状态,比方登录状态。Session 在服务器记录状态。
HTTP 工作原理
1. 客户端连贯到 Web 服务端
一个 HTTP 客户端,与 Web 服务器的 HTTP 端口(80)建设一个 TCP 套接字连贯
2. 发送 HTTP 申请
通过 TCP 套接字,客户端向 Web 服务器发送一个文本的申请报文,一个申请报文由申请行,申请头部,空行,申请数据 4 局部组成
3. 服务器承受申请并返回 HTTP 响应
Web 服务器解析申请,定位申请资源。服务器将资源复本写到 TCP 套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据 4 局部组成。
4. 开释连贯 TCP 连贯
若 connection 模式为 close,则服务器被动敞开 TCP 连贯,客户端被动敞开连贯,开释 TCP 连贯; 若 connection 模式为 keepalive,则该连贯会放弃一段时间,在该工夫内能够持续接
申请报文
POST /xxx/xxx.html HTTP/1.1
Host: www.xxx.com
Content-Length: 155
Connection:Keep-Alive
User=Agent: Mozilla/5.0
Accept-Language: cn
account=prince&password=6666
响应报文
HTTP/1.1 200 OK
Date:Thu, 15 Jul 2019 09:26:55 GMT
Content-Type text/html
Content-Length: 1101
<html>
<body>
....
</body>
</html>
申请形式:有 8 种
GET: 像指定的资源收回“显示”申请
HEAD: 与 GET 办法一样,都是向服务器收回指定资源的申请。只不过服务器将不传回资源的本文局部
POST: 向指定资源提交数据,申请服务器进行解决(例如提交表单或者上传文件)。数据被蕴含在申请本文中。这个申请可能会创立新的资源或批改现有资源,或二者皆有
PUT: 向指定资源地位上传其最新内容
DELETE: 申请服务器删除 Request-URI 所标识的资源。
TRACE: 回显服务器收到的申请,次要用于测试或诊断
OPTIONS: 这个办法可使服务器传回该资源所反对的所有 HTTP 申请办法
CONNECT:HTTP/1.1 协定中预留给可能将连贯改为管道形式的代理服务器。通常用于 SSL 加密服务器的链接(经由非加密的 HTTP 代理服务器)
以 http://www.luffycity.com:80/n… 为例, 其中:
http,是协定;
www.luffycity.com,是服务器;
80,是服务器上的默认网络端口号,默认不显示;
/news/index.html,是门路(URI:间接定位到对应的资源);
?id=250&page=1,是查问。
响应码:5 大种
1xx:批示信息 – 示意申请已接管,持续解决 2xx:胜利 – 示意申请已被胜利接管、了解、承受 3xx:重定向 – 要实现申请必须进行更进一步的操作 4xx:客户端谬误 – 申请有语法错误或申请无奈实现 * 5xx:服务器端谬误 – 服务器未能实现非法的申请
例如:
200:OK – 客户端申请胜利
400:Bad Request – 客户端申请有语法错误,不能被服务器所了解
401:Unauthorized – 申请未经受权,这个状态代码必须和 WWW-Authenticate 报头域一起应用 403:Forbidden – 服务器收到申请,然而回绝提供服务
404:Not Found – 申请资源不存在,eg:输出了谬误的 URL
500:Internal Server Error – 服务器产生不可预期的谬误 *
503:Server Unavailable – 服务器以后不能解决客户端的申请,一段时间后, 可能恢复正常
HTTP1.1
目前最风行的版本,最大的变动就是援用了长久连贯,即 TCP 连贯默认不敞开,不必申明 Connection:keep-alive
客户端和服务器发现对方一段时间内没有流动,就能够被动敞开连贯。不过标准的做法是,客户端在最初一个申请时,发送 Connection:close,示意要求服务器敞开 TCP 连贯。
HTTP/2
新的二进制格局:HTTP2.0 的协定解析决定采纳二进制格局,实现不便且强壮,不同于 HTTP1.x 的解析是基于文本
多路复用:连贯共享,即每一个 request 都是是用作连贯共享机制的
服务端推送:服务器被动向客户端推送音讯
HTTPS
HTTPS 协定:是通过 HTTP 和 SSL(Secure Socket Layer, 安全套接层) 或 TLS(Transport Layer Security, 平安层传输协定)的组合应用,加密 HTTP 的通信内容
默认的 TCP 端口号是:443
HTTPS 在传输的过程中会波及到三个密钥:
服务器端的公钥和私钥,用来进行非对称加密
客户端生成的随机密钥,用来进行对称加密
一个 HTTPS 申请实际上蕴含了两次 HTTP 传输,能够细分为 8 步。
1. 客户端向服务器发动 HTTPS 申请,连贯到服务器的 443 端口
2. 服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密应用的,服务器端保留着私钥,不能将其泄露,公钥能够发送给任何人。
3. 服务器将本人的公钥发送给客户端。
4. 客户端收到服务器端的证书之后,会对证书进行查看,验证其合法性,如果发现发现证书有问题,那么 HTTPS 传输就无奈持续。严格的说,这里应该是验证服务器发送的数字证书的合法性,对于客户端如何验证数字证书的合法性,下文会进行阐明。如果公钥合格,那么客户端会生成一个随机值,这个随机值就是用于进行对称加密的密钥,咱们将该密钥称之为 client key,即客户端密钥,这样在概念上和服务器端的密钥容易进行辨别。而后用服务器的公钥对客户端密钥进行非对称加密,这样客户端密钥就变成密文了,至此,HTTPS 中的第一次 HTTP 申请完结。
5. 客户端会发动 HTTPS 中的第二个 HTTP 申请,将加密之后的客户端密钥发送给服务器。
6. 服务器接管到客户端发来的密文之后,会用本人的私钥对其进行非对称解密,解密之后的明文就是客户端密钥,而后用客户端密钥对数据进行对称加密,这样数据就变成了密文。
7. 而后服务器将加密后的密文发送给客户端。
8. 客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,失去服务器发送的数据。这样 HTTPS 中的第二个 HTTP 申请完结,整个 HTTPS 传输实现。
参考于:https://www.jianshu.com/p/14c…
2. 传输层
传输层:次要性能是实现分布式过程之间的通信。利用网络层提供的服务,在源主机的利用过程与目标主机的利用过程建设“端—端”连贯。
次要是 2 种协定:UDP 和 TCP
UDP 罕用熟知的端口号
TCP 罕用熟知的端口号
UDP 协定:
无连贯: 晓得对端的 IP 的端口号就能够间接传输, 不须要建设连贯
不牢靠: 没有确认机制, 没有重传机制, 如果因为网络故障该段无奈发送到对端,UDP 协定也不会给应用层返回任何错误信息
面向数据报: 不能灵便的管制读写数据的次数和数量
TCP 协定:
1. 有连贯:须要端口号建设连贯
2. 牢靠传输:发送者能感知到是否发送胜利
3. 面对字节流:字节流读取数据
TCP 的三次握手和四次挥手
第一次握手:建设连贯时,客户端发送 syn 包(syn=x)到服务器,客户端进入 SYN_SENT 状态, 期待服务器确认;SYN(同步序列编号)
第二次握手:服务器收到 syn 包,必须确定客户的 SYN(ack=x+1), 同时本人也会收回一个 SYN 包(syn=y), 即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态
第三次握手:客户端收到服务端的 SYN+ACK 包,向服务端发送确认包 ACK(ACK=y+1)此包发送结束,客户端和服务器进入 ESTABLISHED(TCP 连贯胜利)状态,实现三次握手
第一次挥手:Client 发送一个 FIN,用来敞开 Client 到 Server 的数据传送,Client 进入 FIN_WAIT_1 状态。
第二次挥手:Server 收到 FIN 后,发送一个 ACK 给 Client,确认序号为收到序号 +1(与 SYN 雷同,一个 FIN 占用一个序号),Server 进入 CLOSE_WAIT 状态。
第三次挥手:Server 发送一个 FIN,用来敞开 Server 到 Client 的数据传送,Server 进入 LAST_ACK 状态。
第四次挥手:Client 收到 FIN 后,Client 进入 TIME_WAIT 状态,接着发送一个 ACK 给 Server,确认序号为收到序号 +1,Server 进入 CLOSED 状态,实现四次挥手。
3. 网络层
网络层协定:IP 协定,ICMP 协定 (管制报文协定),RIP 等
ICMP 协定是一种面向无连贯的协定,用于传输出错报告管制信息。它是一个十分重要的协定,它对于网络安全具备极其重要的意义。
长连贯:指的是建设连贯后不论是否应用都放弃连贯
短连贯:是指 SOCKET 连贯后,发送接管完数据后马上断开连接
结尾:只有真正的强人,才有话语权,才有安全感