摘自码出高效—Java开发手册
1 网络协议
- 链路层:单个 0、 l 是没有意义的,链路层以字节为单位把 0 与 l 进行分组, 定义数据帧,写入源和目标机器的物理地址、数据、校验位来传输数据。图 1-12 所示是以太网的帧协议。MAC 地址长 6 个字节共 48 位,通常使用十六进制数表示。前 24 位由管理机构统一分配, 后 24 位由厂商自己分配,保证网卡全球唯一。网卡就像家庭地址一样,是计算机世界内的唯一标识
- 网络层: 根据 IP 定义网络地址,区分网段。子网内根据地址解析协议(ARP ) 进行 MAC 寻址, 子网外进行路由转发数据包,这个数据包即 IP 数据包。
- 传输层: 数据包通过网络层发送到目标计算机后,应用程序在传输层定义逻 辑端口 , 确认身份后,将数据包交给应用程序,实现端口到端口间通信。最 典型的传输层协议是 UDP 和 TCP。 UDP 只是在 IP 数据包上增加端口等部分 信息, 是面向无连接的,是不可靠传输,多用于视频通信、电话会议等(即 使少一帧数据也无妨)。与之相反, TCP 是面向连接的。所谓面向连接, 是 一种端到端间通过失败重传机制建立的可靠数据传输方式,给人感觉是有一 条固定的通路承载着数据的可靠传输。
- 应用层: 传输层的数据到达应用程序时,以某种统一规定的协议格式解读数 据。比如 , E-mail 在各个公司的程序界面、操作、管理方式都不一样,但是 都能够读取邮件内容, 是因为 SMTP 协议就像传统的书信恪式一样,按规定 填写邮编及收信人信息。
总结一下,程序在发送消息时,应用层接既定的协议打包数据, 随后由传输层加 上双方的端口号,由网络层加上双方的 IP 地址,由链路层加上双方的 MAC 地址, 并 将数据拆分成数据帧, 经过多个路由器和网关后, 至lj达目标机器。简而言之, 就是按 “端口→ IP 地址→ MAC 地址” 这样的路径进行数据的封装和发送, 解包的时候反过 来操作即可。
2 ip协议
IP 是面向无连接、无状态的,没有额外的机制保证发送的包是否有序到达。 IP 首先规定出 IP 地址格式,该地址相当于在逻辑意义上进行了 网段的划分,给每台计 算机额外设置了一个唯一的详细地址。既然链路层可以通过唯一的 MAC 地址找到机 器,为什么还需要通过唯 的 IP 地址再来标识呢?简单地说,在世界范围内,不可 能通过广播的方式, 从数以千万计的计算机里找到目标 MAC 地址的计算机而不超时。在数据投递时就需要对地址进行分层管理。举个例子,一个重要快递从美国发出,要 发给中国浙江省台州市某小区的 X 先生。快递公司需要先确定中国的转运中心(如 浙江某转运中心),然后再从转运中心逐级配送到各个下级转运点。当快递到达该小 区后,快递员大喊一声“X 先生领快递啦|”虽然小区里包括 X 先生在内的所有人 都听到了快递员的喊声,但只有 X 先生收取快递并当面打开确认,其他人确定不是 叫自己则不用理会。 IP 地址如图 1-14 所示,即 30.38.48.22 ,右边为物理层发送和接 收数据的统计。
IP 地址属于网络层,主要功能在 WLAN 内进行路由寻址,选择最佳路由。 IP 报 文格式如图 1-15 所示,共 32 位 4 个字节,通常用十进制数来表示。四地址的掩码 Ox值班。。表示 255.255.255.0,掩码相同,则在同一子网内。 IP 协议在 IP 报头中记录 源 IP 地址和目标 IP 地址,如图 1-15 所示。
协议结构比较简单,重点说 下数据包的生存时间,即 TTL,它是数据包可经 过的最多路由器总数。 TTL 初始值由源主机设置后,数据包在传输过程中每经过一 个路由器 TTL 值则减 l ,当该字段为 0 时,数据包被丢弃,并发送 ICMP 报文通知 源主机,以防止源主机无休止地发送报文。这里扩展说一下 ICMP ( Internet Control Message Protocol ),它是检测传输网络是否通畅、主机是否可达、路由是否可用等网 络运行状态的协议。 ICMP 虽然并不传输用户数据,但是对评估网络健康状态非常重 要,经常使用的 ping、 tracert 命令就是基于 ICMP 检测网络状态的有力工具。图 1-15 中 TTL 右侧是挂载协议标识,表示 IP 数据包里放置的子数据包协议类型,如 6 代表 TCP, 17 代表 UDP 等。
IP 报文在互联网上传输时,可能要经历多个物理网络,才能从源主机到达目标 主机。比如在手机上给某个 PC 端的朋友发送一个信息,经过无线网的 IEEE 802.lx 认证,转到光纤通信上,然后进入内部企业网 802.3 ,并最终到达目标 PC。由于不同硬件的物理特性不同,对数据帧的最大长度都有不同的限制,这个最大长度被称为最 大传输单元,即 MTU ( Maximum Transmission Unit )。那么在不同的物理网之间就 可能需要对 IP 报文进行分片,这个工作通常由路由器负责完成。
IP 是 TCP/IP的基石,几平所有其他协议都建立在 IP 所提供的服务基础上进行传 输,其中包括在实际应用中用于传输稳定有序数据的 TCP。