目录

【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 分用

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

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
王磊鑫1 小时前
重返JAVA之路-初识JAVA
java·开发语言
半兽先生1 小时前
WebRtc 视频流卡顿黑屏解决方案
java·前端·webrtc
邪恶的贝利亚2 小时前
FFMEPG常见命令查询
linux·运维·网络·ffmpeg
南星沐2 小时前
Spring Boot 常用依赖介绍
java·前端·spring boot
代码不停3 小时前
Java中的异常
java·开发语言
只会写Bug的程序员3 小时前
面试之《websocket》
网络·websocket·网络协议
何似在人间5753 小时前
多级缓存模型设计
java·jvm·redis·缓存
多云的夏天3 小时前
ubuntu24.04-MyEclipse的项目导入到 IDEA中
java·intellij-idea·myeclipse
christine-rr4 小时前
【25软考网工笔记】第二章 数据通信基础(1)信道特性 奈奎斯特 香农定理
网络·信息与通信·信号处理·软考
Fanxt_Ja4 小时前
【数据结构】红黑树超详解 ---一篇通关红黑树原理(含源码解析+动态构建红黑树)
java·数据结构·算法·红黑树