JAVA——网络编程基本概念
端口号
就是用来定位主机中的进程,通过IP地址和端口号结合,就能定位到网络中唯一一个进程
协议
协议就例如:接头行动,两个人必须规定一个暗号,才能对上,这就是一种协议
计算机中的协议就是规定网络通信中的设备如何连接,如何互相识别的一套规则。
我们在适配器属性这里可以经常看见ipv4、ipv6,这些都是网络通信协议
协议有三要素:
- 语法:规定数据与控制信息格式。例如两个人打电话规定用中国话
- 语义:规定当一端发出了控制信息,另一端该如何响应,做出什么动作。比如跑步,发令枪一响运动员就跑起来了
- 时序:即事件实现顺序的详细说明。规定了何时通信,先干什么,后干什么。
一个协议如果要解决网络通信的全部问题,那么一个协议是十分复杂的,于是有了协议分层
协议分层
协议分层就如同我们写代码时,一个类太复杂了,我们就把他拆分成多个类,一个类实现一个功能。
类似,有些协议解决的问题都差不多,于是依据他解决问题的类型,把他们分成了多层协议。
常见协议分分层模型:
OSI七层模型
由于OSI七层模型过于复杂,且不实用,所以并没有实现
TCP/IP五层模型(重点)
TCP/IP模型根据OSI七层模型进行了精简,如图
理解每层协议的功能:
- 应用层:负责数据传输到之后,该怎么使用
- 传输层:负责两点之间数据传输,只管发出者和接收者,不管传输路径。可类比卖家发货只管发货地和收货地
- 网络层:负责两个点之间的路径规划。可类比卖家把东西给物流公司后,物流公司负责规划路径,例如北京到深圳,可以是这个路径:北京——杭州——苏州——深圳,也可以是这个路径:北京——广东——上海——深圳。
- 数据链路层:负责两个节点之间如何传输。可类比物流公司规划完路径之后,两个节点之间如何运输,北京到广东该用货车运还是飞机运。
- 物理层:网络通信基础设施。就是我们平常可见的信号塔,也可类比送快递的公路,没有公路快递也没法送
协议在此拆分过后,有许多好处:
- 下层协议使用上层协议不需要知道他实现细节,只管用
- 每一层协议可以替换层其他协议,其他层次的协议是不会感受到的,这也是协议更加灵活了
网络设备所在分层:
- 路由器:网络层
- 交换机:数据链路层
- 集线器:物理层
封装和分用
封装就是在每层进行处理成一个数据报,然后递给下一层,在处理完后,交给物理层传输出去。
过程:在应用层会产生一个数据包,然后将数据包递给传输层,传输层拿到数据包和自己的数据整合好产生一个数据报再给网络层,以此类推,直到数据链路层整合好所有数据后,会构成一个以太网数据帧,将这个数据给物理层,物理层会将二进制信息转化为光信号/电信号传递出去。
同理,分用就是封装的逆过程,将数据层层拆分,最后拿到应用程序数据