JavaEE 网络篇(1)

本文开始针对网络基础概念进行探讨

1.IP地址

IP地址是标识网络一台设备所在的位置——用于定位主机的网络地址

例如 陕西省 西安市 临潼区 西安科技大学

2.端口号

一台主机可能有多个程序,同时使用网络

端口号 是用来区分一台主机上不同程序的——用于定位主机上的进程

3.认识协议

当程序已经收到数据了,程序如何理解数据的含义?

网络协议——通信双方对于发送/接受 数据格式的约定

协议 最终体现为 网络上传输的数据包的格式

网络通信中,协议非常关键——多个主机认同并遵守同一套协议,此时通信才是有意义的

例如 国内同胞 可以互相交流通信,是因为遵守同一套协议——中国话

相反 我们和外国人 无法交流 协议不同——语言不同

4.五元组

  • 源IP——标识源主机
  • 源端口号——标识源主机中该次通信发送数据进程
  • 目的IP——标识目的主机
  • 目的端口号——标识目的主机该次通信接收数据进程
  • 协议类型——标识 发生进程和接收进程双方约定的数据格式

例如 

相当于  A从甲地 到乙地 找B

5.协议分层

由于网络通信非常复杂

如果设计一个协议,完成网络通信中方方面面的问题,势必会使这个协议非常复杂,非常庞大

使用要把一个庞大的协议——拆分成 若干个 功能单一的协议

为了方便管理进行归类分层

什么是协议分层?         相当于打电话时,定义不同的层次的协议:

5.1分层:

  • 只有相邻两层协议之间可以进行交互
  • 上层协议可以调用下层协议
  • 下层协议可以给上层协议提供服务
  • 协议之间的交互,不能跨层进行        

例如 跨级汇报是职场大忌

5.2封装

上层协议,不需要了解下层协议的细节

例如打电话的人 会说话就行了,不需要理解电话机的工作原理

5.3解耦

分层之后,灵活的替换其中某一层,对于整体的工作进程影响很小

真实的互联网,具体是怎么分层的呢?

OSI——七层网络模型

这一套分层的体系,只是存在于教科书上

由于体系太复杂了,实际真实的网络分层方式更简化——TCP/IP 五层(四层)协议模型

6.TCP/IP 五层(四层)协议模型(经典面试题)

网络层的传输是基于数据链路层的

网络层:你要把小纸条 传给教室里的同学A 

                先交给前排同学 告诉他 “传给A”

                前排同学再交给别人 告诉他“传给A”

数据链路层的传输是基于物理层的

你和你的同桌传纸条

物理层相当于在修路

网络=>物流系统                要想富,先修路

6.1例1        在淘宝买衣服,商家发货

商家站在传输层的角度,关心包裹从哪来,到哪去

把包裹交给快递小哥(物流公司)

物流公司,则要考虑好 包裹如何一步一步 到达我的手里

6.2例2 买一箱卫生纸

  • 我只关心卫生纸到货之后 如何使用——应用层
  • 卖家关心 收件人信息——传输层
  • 物流公司关心 包裹通过哪些路径运输(所有露出)——网络层
  • 快递小哥/货车司机考虑 相邻的节点(一小段路程)——数据链路层

注意: 有时候会把数据链路层 物理层看成一个整体 物理层与硬件设备直接相关

        所以读 TCP/IP 四层协议模型也是正确的

6.3经典面试题

真实情况的工作过程不太一样,真实的路由器交换机 功能更强大 更丰富

现在的交换机 很多都有路由器的功能

路由器也可以开启特殊模式(mesh) 可以实现“交换机”的效果

7.网络数据通信的基本流程

例如 我通过qq 给对方 发送hello

7.1应用程序获取到用户输入,构造一个应用层的数据包

这个应用层的数据包 就会遵守 应用层协议

应用层的数据包:一般是“结构化数据”(类似 c的结构体 有很多属性)

假设 此处的协议格式为:发送者qq号,接收者qq号,消息的时间,消息正文

7.2 应用程序调用 传输层 提供的接口(API) 把数据交给传输层

传输层拿到数据之后,构造出“传输层数据包”

传输层 协议主要是两个(此处以TCP为例)

  • TCP
  • UDP

TCP数据包=TCP报头(header) + TCP载荷(payload)

  • TCP报头(header) ——TCP功能相关属性(包含源端口 目的端口)
  • TCP载荷(payload)——应用层数据包

7.3传输层构造好数据之后,继续调用网络层的API,把传输层的数据包交给网络层

网络层继续进行处理

网络层最主要的协议——IP协议,IP协议继续对上述数据包继续加工=>拼上IP报头

IP数据包=IP报头+IP载荷

  • IP载荷(整个传输层的数据包)
  • IP报头也包含很多信息(源IP 目的IP)

IP协议/TCP协议 本身不关心载荷内容

协议类型,其实不只是一份数据,有很多层。

其中IP报头里就会记录当前的传输层使用的是哪个协议

传输层报头中,也会记录应用层使用哪个协议(准确来说是 数据交给哪个应用程序)

数据链路层报头也会记录,网络层使用哪个协议

7.4IP协议继续调用 数据链路层的API,把IP数据包交给数据链路层

数据链路层中,核心协议,“以太网”

以太网这个协议,也会在网络层数据包的基础上进一步加工

以太网数据帧=帧头+载荷+帧尾

7.5以太网继续把这样的数据交给硬件设备(网卡)

网卡会把上述二进制数据,最终以光信号/电信号/电磁波信号 传播出去了

此时数据终于出门了

从上层到下层,数据都要进一步加工(添加报头) 封装

接受方法是从下到上依次解析,分用 ——封装的逆过程

7.6相关术语

谈到网络传输的“基本数据单位” 涉及到多个术语

网络数据包/帧/报/段

  • 段(segment)——TCP用的
  • 报(Datagram)——UDP用的
  • 包(packet)——IP用的
  • 帧(frame)——数据链路层 以太网数据帧

7.6图示流程

7.6.1数据封装过程

7.6.2数据分用的过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值