网络知识你真的了解吗-[Android_YangKe]
目录
- 网络模型
- 常用协议
网络模型
首先我们看一下网络模型的划分。按照模糊的划分,网络可以分为五层模型,分别为:应用层、传输层、网络层、链路层、物理层。正由于这些服务才构建了整个网络的互联互通。
那么各层是如何工作的呢?首先我们看一下应用层,程序在发送数据时,应用层按照给定的协议打包数据,随后由传输层加上双方端口号,网络层加上双方IP地址,链路层加上双方MAC地址,并且将数据拆分成数据帧,经过多个路由器和网关后到达目的机器。简而言之就是根据:端口号+IP+MAC地址进行数据组包和发送。
知道了网络模型,下面我们看一个完整的 URL:[schema://][host][:port][/path][?query-string][anchor]
可以看出整体分为了六部分,分别为:
-
scheme:指定底层使用的协议(例如:http, https, ftp 等)
-
host:服务器的 IP 地址或者域名
-
port:服务器端口号,http 默认为80, https 为443。如果使用了别的端口,必须指明,例如 :
http://xxx.com:8080
-
path:访问资源的路径
-
query-string:发送给http服务器的数据
-
anchor:锚
URL 的一个例子
http://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true#stuff
Schema:http
host:www.mywebsite.com
path:/sj/test/test.aspx
Query String:name=sviergn&x=true
Anchor:stuff
请求头中包含的信息
- Accept
标识浏览器端可以接受的数据类型,例如:Accept: text/html
代表浏览器可以接受服务器回发的类型为text/html
也就是我们常说的 html 文档,如果服务器无法返回text/html
类型的数据,服务器应该返回一个406错误non acceptable
。
- Accept-Encoding:
标识浏览器声明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate)。
例如: Accept-Encoding: zh-CN,zh;q=0.8。
- Accept-Language
标识浏览器声明自己接收的语言。 语言跟字符集的区别:中文是语言,中文有多种字符集,比如 big5,gb2312,gbk 等等。例如: Accept-Language: en-us。
- User-Agent
告诉服务器, 客户端使用的操作系统和浏览器的名称和版本。
我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你的操作系统的名称和版本,你所使用的浏览器的名称和版本,这往往让很多人感到很神奇,实际上,服务器应用程序就是从User-Agent
这个请求报头域中获取到这些信息User-Agent
请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。
例如: User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; CIBA; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; InfoPath.2; .NET4.0E)
- Cookie
Cookie 是用来存储一些用户信息以便让服务器辨别用户身份的(大多数需要登录的网站上面会比较常见),比如 cookie 会存储一些用户的用户名和密码,当用户登录后就会在客户端产生一个 cookie 来存储相关信息,这样浏览器通过读取 cookie 的信息去服务器上验证并通过后会判定你是合法用户,从而允许查看相应网页。当然 cookie 里面的数据不仅仅是上述范围,还有很多信息可以存储是 cookie 里面,比如 sessionid 等。
常用协议
- TCP
- HTTP/HTTPS
- IP
- UDP
- FTP
- SMTP
TCP
Transmission Control Protocol 是一种面向连接的、可靠的、基于字节流的传输层通信协议,它约定传输信息在网络中如何分层,分组,在线路上传输。
HTTP/HTTPS
超文本传输控制协议,两者都是基于 TCP 的实现,可以保证数据的完整性,一般应用在对数据完整性要求较高的场景下,客户端与服务端不是基于长连接的实现所以连接是无状态的,常用的操作有 GET、POST、DELETE、PUT 等。
HTTP 默认端口为 80,信息是明文传输的,没有进行过加密,有被中间者截包修改数据的风险,安全性较低。HTTPS 反之,是 HTTP 的升级版,主要体现在安全性上。HTTPS 首先是修改了协议端口,更换了传输通道,其次在 HTTP 的基础上引入了 SSL 技术来保证数据安全,HTTPS 安全主要体现在会对传输内容进行加密,信息完整性验证、身份验证、证书验证等一系列操作。隶属于网络层。https 是如何保证的传输安全的详解。
IP
Internet Protocol 简称为 IP,又译为网际协议或互联网协议,是用在TCP/IP协议簇中的网络层协议。是一个无连接的、不可靠的、点对点的协议,只能尽力传送数据,不能保证数据的到达。
UDP
User Datagram Protocol 的简称, 中文名是用户数据报协议。是一种无连接的传输层协议
,正由于此,此协议的传输效率相对较高,常见的使用场景:语音聊天,视频聊天。与 TCP 反之。
FTP
File Transfer Protocol,文件传输协议。此协议分为两个端,一个为服务端,一个为客户端。其中服务端用来存储文件,用户可以使用 FTP 客户端下载文件。FTP 的传输效率特别高,一般传输大文件时使用此协议。
SMTP
Simple Mail Transfer Protocol 简单的邮件传输协议。是一种提供可靠且有效的电子邮件传输的协议。SMTP 是建立在 FTP 文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。
完~
喜欢有帮助的话: 双击、评论、转发,动一动你的小手让更多的人知道!关注 Android_YangKe