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连贯后,发送接管完数据后马上断开连接
结尾:只有真正的强人,才有话语权,才有安全感