Java 网络原理基础

IP地址

用来标识网络上设备的位置

端口号

标识一个具体的应用程序(进程)

网络协议

网络协议是通信双方的一种"约定"

发送方按照协议发送数据,接收方按照协议解析数据.

就好比两个人进行对话,如果"协议"是用中文,那么双方就要用中文对话,如果"协议"是用英文,那么双方就要用英文对话.

在网络通信中使用的协议不是将其整合成为一个协议,而是分成多层协议,让不同的设备交流时使用不同的协议.

协议分层

协议的分层风格有两种,一种是OSI七层网络模型(理论上存在,现实不存在),一种是TCP/IP 五层(四层)网络模型(实际使用情况)

OSI分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

TCP/IP分为:应用层、传输层、网络层、数据链路层、物理层

相当于把OSI的应用层、表示层、会话层整合成为一个层,其他都相同

物理层:约定了网络通信中基础的硬件设备

数据链路层:主要负责相邻两个节点如何传输

网络层:主要负责路径的规划

传输层:负责端与端之间的传输

应用层:描述了传输的数据用户要如何使用

举个例子:我买了一个快递,

物理层 就是约定好了商品、地址等信息;

数据链路层 就是快递公司选择的出货方式,比如:货车、火车...

网络层 就是运输时选择的行走路线,比如:上海->天津->北京 或者 上海->杭州->北京...

传输层 就是运输过程

应用层 就是该商品该如何使用

(前面写的四层和五层就是是否算上物理层,因为物理层一般不是程序员该考虑的范围)

上面这些层(以应用层为首)由上往下是上层协议要调用下层协议,下层协议给上层协议提供服务

在实际应用中,如果我使用微信给别人发了一条信息,此时应用程序就会将该消息打包成一个应用层数据报

然后,程序调用操作系统的api,将应用层的数据传给传输层

在传输层中就需要将传过来的数据打包成传输层数据报

传输层的协议中最出名的就是UDP和TCP,假如此处使用UDP,那么就会在应用层数据的基础上加上一个UDP报头

在网络层,最知名的是IP协议了,同样的,要在传输层基础上打包成一个IP数据报

数据链路层最出名的就是"以太网",要将网络层数据报打包成一个以太网数据帧

接下来就由物理层将以太网数据帧的数据(二进制数据,一串0101...)转化为电信号/光信号,然后就将信息传输出去了

上述过程,从应用层到物理层之间的"层层加码",这个过程成为"封装"(不是面向对象的封装)

此时接收方的物理层接收到信号,会将这些信号转化为01数据,转换过后接收上面的以太网数据帧

然后将此数据交给数据链路层进行解析

数据链路层需要对其去掉帧头帧尾,取出中间的载荷,然后交给网络层进行分析

网络层此时得到的是一份IP数据报

它再对其进行取出IP报头的工作(IP报头中会记录载荷是UDP还是TCP),得到了一份传输层数据报,然后会将其传送到传输层

此时传输层对UDP进行解析,取出载荷,再将载荷交给应用程序

在UDP报头中有一个重要的字段:目的端口,目的端口和是一个具体的应用程序相关的,因此可以根据这个端口将数据传送给应用程序

最后应用层会对应用层数据报进行解析,此时信息就在接收方的微信上面了

上述接收方的"解码"的过程,称为"分用"

注意:上面的层和层直接不可以跳过,只有相邻的两层之间才可以进行交互(不能跨层交互)

客户端

收获服务的一方进程称为客户端,也是用户使用的进程

服务器

提供服务的一方进程,称为服务器,可以对外进行服务

请求

由客户端向服务器发出去的请求

响应

有服务器给客户端发回来的响应

猜你喜欢

转载自blog.csdn.net/m0_64318128/article/details/128946139
今日推荐