最近准备整理一些关于Http,Tcp/IP的知识点,这些知识点不会太深,但都是进行Android开发所必须要理解和掌握的。
先从tcp/ip讲起吧。
TCP/IP两个重要特性:
- 端点验证:这意味着参与通信的两个计算机自己负责确认和验证传输结果。也意味着参与通信的两台计算机是对等的,不存在一个中心节点来对监控传输过程,并对传输结果负责。
- 动态路由选择:参与通信的两台计算机可以通过多条路径来发送数据,路由器根据当前的网络状况来选择一条路径。这也决定了路由器在整个网络中的重要地位。
TCP/IP协议簇主要处理的问题有以下几个方面:
- 逻辑编址
- 路由选择
- 名称解析
- 错误和流量控制
- 应用支持
逻辑编址
每个网络适配器有一个物理地址,在出厂的时候内置,被称为MAC地址。
在局域网中,低层和硬件相关的协议会使用该地址,以便在局域网内找到该计算机。现在的以太网中,每一个网络适配器都会监听该局域网中每一帧的数据传输,从而来判断数据是否是发送给自己的。
有以上可以看出,这种方式不适用于Internet,如果Internet上每一台计算机都监听每一个数据,整个网络都会瘫痪。
所以我们需要一种可以路由的地址。
何谓路由,就是路径选择,该地址应该具有分层次的结构,能够让数据一层一层的传递,比如可以让数据可以从整个Internet这个大网络先传递到一个小一点的网络,然后在继续往更小的网络传输,直到找到正确的计算机。
IP逻辑地址提供了这样的能力,所以在网络上传输的数据使用的地址都是IP地址。
一个IP地址包含以下分层:
- 一个用于识别网络的网络ID
- 一个用于识别网络中子网的子网ID
- 一个用于识别子网中主机的主机ID。
当我们的计算机和Internet隔离的时候,我们可以使用任何的IP地址,只要格式符合IP地址规范就可以。
但如果我们想要连接Internet,那么我们就需要从网络管理机构申请一个正式的网络ID,该ID会作为IP地址的第一部分。
由于正式的IP地址有限,所以就有了NAT技术
NAT 网络地址转换
:他可以把局域网中不可以联网的IP地址转换成可以联网的IP地址。这样可以使用一个正式的IP地址让一个局域网内所有的计算机都有联网能力。
逻辑IP地址最终要转换成MAC地址才能找到正确的计算机,这时候就要用到ARP 地址解析协议
,该协议可以把一个IP地址转换成MAC地址。反ARP协议
就是用来把MAC地址转换成IP地址的协议。
路由选择
路由器就相当于一扇门,可以让两个不同的子网相互传递数据。TCP/IP协议簇中定义了很多路由协议,可以帮助路由器快速的找到下一个子网。
路由器和HUB有一个很重要的区别就是路由器使用的是IP地址进行路径选择,而HUB使用的是物理地址。
名称解析
,由于IP地址是一段32位的数值,不方便人们记忆,所以人们给每个IP地址起了一个便于记忆的别名,比如叫百度,新浪等。
DNS域名解析系统
就是用于把别名转换成IP地址。
应用支持
TCP/IP通过端口向应用程序分发程序,不同类型的应用程序监听不同的端口,比如常见的8080
端口。
TCP/IP四层模型
四层协议.jpg数据在四层模型之间的流动,当发送数据时(从上到下)每经过一层,该层都会在数据上加上一层自己的信息,被称为报头。接收数据时正好相反(为什么每一层都要加上自己的报头信息?因为在接收的时候相应的层需要这些报头信息来处理数据)
在应用层的数据被称为消息
,当消息
来到传输层,会被加上传输层的报头信息,如果 传输层是TCP协议,则被称为数据包
,如果是UDP协议,则被称为数据报
。
当数据报
或者数据包
来到IP层,会被加上IP层的报头信息,同时IP层为了便于传输,还会把大的数据包分成小段,这也是IP层一个很重要的作用。
IP数据段来到网际访问层的时候,可能会被继续分解成更小的片段,并加上网际访问层的信息,此时的数据被称为帧
,最终帧数据会被转换为比特流在局域网传递。
接下来会详细介绍TPC/IP的每一层
网友评论