【JavaEE】_网络通信原理

目录

[1. 网络发展史](#1. 网络发展史)

[2. 网络通信基础](#2. 网络通信基础)

[1.1 IP地址](#1.1 IP地址)

[1.2 端口号](#1.2 端口号)

[1.3 协议](#1.3 协议)

[1.3.1 概念](#1.3.1 概念)

[1.3.2 五元组](#1.3.2 五元组)

[1.4 协议分层](#1.4 协议分层)

[1.4.1 协议分层的优点](#1.4.1 协议分层的优点)

[1.4.2 协议分层的分类](#1.4.2 协议分层的分类)

1.4.3网络设备所在分层

[1.4.4 两台主机通过TCP/IP协议通讯过程](#1.4.4 两台主机通过TCP/IP协议通讯过程)

[1.5 封装与分用](#1.5 封装与分用)

[1.5.1 封装](#1.5.1 封装)

[1.5.2 分用](#1.5.2 分用)


1. 网络发展史

(1)单机:计算机之间相互独立;

(2)局域互联网LAN:将多台电脑通过路由器、集线器、交换机等进行连接构成局域互联网;

组件局域网的方式:

① 网线直连; ② 基于交换器组建; ③ 基于集线器组建; ④ 基于交换机和路由器组建;

(3)广域互联网WAN:使用路由器连接多个局域网形成大范围网络,形成广域网;

(局域网与广域网之间没有明确的界限)

注:组件网络涉及到的重要设备:

① 集线器:一根网线分两路,但同一时刻只同一条,比较古早,现今不常见;

② 交换机:组件局域网(不能跨局域网),可以用于扩展路由器的端口,而今带有路由功能的交换机也较常见,故而交换机与路由器的界限也越来越模糊;

③ 路由器:将两个局域网进行连接(跨局域网),一般家用路由器常见是5个网口:I个WAN+4个LAN,其中WAN口用于连接上级路由器;

2. 网络通信基础

网络互联的目的是进行网络通信,即网络数据传输;

1.1 IP地址

  1. 在组建的网络中,主机用于输出或是接收数据根据IP地址进行标识,标识了网络设备所在的位置,

即:IP地址用于定位主机的网络地址,唯一标识一个主机

  1. 在计算机中,使用一个32位、4字节数字表示地址,一般会把IP地址表示成4个0~255之间的十进制数字,并且用3个点进行分割,这种表示方法称为点分十进制表示法。

1.2 端口号

  1. 网络通信时,端口号可以标识主机中发送、接收数据的进程,标识了一个具体的应用程序;

即:端口号用于定位主机中的进程

  1. 端口号也是一个整数,大小为2字节,相对IP地址,是一个比较小的数字,范围是0~65535。

  2. 不同的程序可以关联/绑定到不同的端口号,要求同一个主机上的应用程序不能关联到同一个端口号。一个端口号只能被一个程序绑定,但一个程序可以绑定多个端口;

如:mysql服务器绑定了3306端口,与此同时mysql还可以绑定其他的端口,但其他的程序就不能绑定3306端口了。

  1. 端口号的分类:

第1类:熟知端口号:1~1023,留给一些较常见的服务器程序进行使用的,如:DNS:53端口,HTTP:80端口;

第2类:登记/注册端口号:1024~49151,使用这类端口号必须在IANA登记;

第3类:临时端口(短暂端口号):49152~65535,仅在客户进程运行时才动态选择,通信结束后则端口号收回。

1.3 协议

1.3.1 概念

协议是网络协议的简称,网络协议是网络通信经过的所有网络设备都必须遵从的一组约定、规则;

1.3.2 五元组

在TCP/IP协议中,一次通信涉及到五元组,即:

源IP,源端口,目的IP,目的端口,协议类型

1.4 协议分层

1.4.1 协议分层的优点

基于复杂的网络编程,如果协议过于复杂会导致学习成本、维护成本等都非常高,故而实际情况是复杂的大协议被拆分成若干个相对简单的小协议,令每个协议负责一部分功能,某些协议之间的功能与作用是类似的,故而针对小协议再进行分层,类似于代码中功能类似的类在同一包中;

① 如甲乙用汉语使用电话机打电话时,协议就被分为语言层汉语协议与通信设备层电话机协议,两个协议之间没有必须相互熟知底层原理的必要,类似于封装,降低了学习和维护的成本;

② 如甲乙现用英文或使用无线电话打电话,同时可以灵活地针对某一层协议进行替换;

1.4.2 协议分层的分类

当前互联网的协议分层主要有两种风格:

第一种: OSI 七层网络模型:实际不存在,教科书用于教学;

第二种: TCP/IP 五层(四层)网络模型:实际存在的,是OSI七层模型的简化版本;

物理层:约定网络通信中基础的硬件设备种类,如通信使用的网线、网口等等;

数据链路层:负责相邻两个结点如何进行传输;

网络层:负责路径的规划;

传输层:负责设备之间的数据传输,即端到端之间的传输,关注起点和终点;

应用层:描述应用程序如何使用数据,可以使用现有协议,也可由程序员自行编写,是程序员最需要关注的一点;

注:(1)主机是五层转发,路由器是三层转发(需解析出IP协议),交换机是二层转发(只需关注下一步发展到哪个相邻的设备上);

(2)基于协议分层的网络数据传输的基础五元组:

(3)应用层协议往往是根据具体的场景与需要,由程序员自主决定的;

源IP、源端口、目的IP、目的端口、协议类型;

1.4.3网络设备所在分层

  1. 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,即TCP/IP的全5层;

  2. 对于一台路由器,它实现了从网络层到物理层,即TCP/IP五层的下3层;

  3. 对于一台交换机,它实现了从数据链路层到物理层,即TCP/IP五层的下2层;

  4. 对于一台集线器,它只实现了物理层;

注:(1)交换机的作用是对路由器的端口进行拓展。

1.4.4 两台主机通过TCP/IP协议通讯过程

注:(1)通信双方的协议必须一致,否则通信无法正常进行;

(2)发送方进行封装,接收方进行分用;

1.5 封装与分用

  1. 不同的协议层的数据报有不同的称谓:在传输层叫做段,在网络层叫做数据报,在链路层叫做帧;

  2. 每层协议层增加或剥离的首部信息中包含了一些类似于首部长度、载荷长度以及上层协议名称等信息;

1.5.1 封装

应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部,称为封装:

1.5.2 分用

数据封装成帧后发送到传输介质上,到达目的主机后每层协议剥离相应首部,根据首部中的"上层协议字段"将数据交给对应的上层协议处理:

相关推荐
救救孩子把11 分钟前
深入理解 Java 对象的内存布局
java
落落落sss14 分钟前
MybatisPlus
android·java·开发语言·spring·tomcat·rabbitmq·mybatis
万物皆字节19 分钟前
maven指定模块快速打包idea插件Quick Maven Package
java
程序员-珍23 分钟前
虚拟机ip突然看不了了
linux·网络·网络协议·tcp/ip·centos
夜雨翦春韭26 分钟前
【代码随想录Day30】贪心算法Part04
java·数据结构·算法·leetcode·贪心算法
我行我素,向往自由32 分钟前
速成java记录(上)
java·速成
一直学习永不止步38 分钟前
LeetCode题练习与总结:H 指数--274
java·数据结构·算法·leetcode·数组·排序·计数排序
邵泽明39 分钟前
面试知识储备-多线程
java·面试·职场和发展
程序员是干活的1 小时前
私家车开车回家过节会发生什么事情
java·开发语言·软件构建·1024程序员节
煸橙干儿~~1 小时前
分析JS Crash(进程崩溃)
java·前端·javascript