(Java高级教程)第三章Java网络编程-第一节3:网络编程必备网络知识3之IP地址、端口号

news2025/2/22 12:38:37

文章目录

  • 一:网络传输基本流程
    • (1)数据包
    • (2)网络传输的基本流程
    • (3)具体处理过程
      • A:发送数据
      • B:路由转发
      • C:接受数据
  • 二:网络中的地址
    • (1)MAC地址
    • (2)IP地址
    • (3)端口号
      • ①:基本概念
      • ②:端口号确定方法
  • 三:五元组

一:网络传输基本流程

(1)数据包

前文说过,发送“你好”这样的信息给另一台主机,发送时并不是简简单单就这样直接传递过去,而是会封装一些其他信息,最终在以太网电缆中传输。

在这里插入图片描述
每个分层中,都会对所发送的数据附加一个首部,在这个首部中包含了该层的必要信息。我们知道每一层都有相应的协议,所以为协议提供的信息是包的首部,所要发送的内容为数据。因此上图中,从下一层角度看,从上一层受到的包全部都认识是本层的数据
在这里插入图片描述
其中,包,帧,数据包,段,消息的区别如下
在这里插入图片描述

网络中传输的数据包由两部分组成:一部分是协议所要用到的首部,另一部分是上层传过来的数据。首部的结构由协议的具体规范定义。比如识别上一层协议的域应该从包的哪一位开始取多少比特位,以及如何计算校验和插入包的哪一位等等。所以相互通信的两端计算机如果在识别协议的序号以及校验的计算方法等上出现不一致,就无法完成通信。

(2)网络传输的基本流程

以发送“早上好”这样的信息为例,下图展示了大致的传输流程

在这里插入图片描述
可以看出最终在以太网电缆中传输的数据相较于原生数据是“庞大的”。
如下,包流动时从前往后依次附加以太网包首部,IP包首部,TCP包首部以及应用程序自己的包首部和数据,包的最后则追加了以太网包尾
在这里插入图片描述
每个包首部中至少会包含两个信息:一个是发送端和接收端的地址,一个是识别上一层协议类型
在这里插入图片描述
经过每个协议分层时,都必须有识别包发送端和接收端的信息:以太网会用MAC地址(MAC地址具有唯一性),IP则会用IP地址,TCP/IP则会用端口号等。
在这里插入图片描述

(3)具体处理过程

上面的流程图左半部分称之为封包,右半部分称之为解包。所对应的操作分贝就是发送接受。封包时,上一层封好之后只需将数据传递给下一层(也就是调用某个接口)进行封包,但是解包时存在一些问题:比如下一层分离完自己的包首部后,如何确定自己的数据移交的对象等等(这个过程称为分用)。当然这一切都是协议规定好的.

A:发送数据

1:应用程序处理

键盘输入“早上好”之后,点击某个应用程序的发送按钮,之后应用程序会进行编码(比如utf-8)。应用程序在发送那一刻建立TCP连接,从而利用TCP连接发送数据,它的过程首先是将应有的数据发送给下一层的TCP。
在这里插入图片描述
2:TCP模块处理

TCP根据应用的知识,负责建立连接,发送数据及断开连接。TCP提供可靠传输保证数据顺利发送
TCP首部包括源端口号和目标端端口号(用于是被发送主机和接受主机上的应用),序号(用于判断包中那部分是数据)还有校验(判断数据是否损坏)。随后再发送给IP

3:IP模块处理

IP模块在TCP首部前添加IP首部,IP首部包含接收端IP地址和以及发送端IP地址。IP包生成之后,参考路由表决定接受此IP包的路由和主机,随后IP包将被发送给连接这些路由器或主机网络接口的驱动程序,以实现真正发送数据。只要知道了对方MAC地址就可以将MAC地址和IP地址交给以太网驱动程序实现数据传输

4:以太网驱动添加首部通过物理层实现传输

B:路由转发

数据已经封装好了,准备进行发送,如果对方和自己不在同一个局域网内就要进行路由器的转发,如下图。

有两个局域网,中间的路由器可以作为左边局域网的主机也可以作为右边局域网内的主机。路由器接受到左侧发送过来的数据后,进行解包,发现MAC地址不在本局域网内,然后去除之前的以太网首部,通过查询路由表确定新的MAC地址,再次添加以太网首部,然后发送到另一个局域网内。

在这里插入图片描述
所以我们在百度搜索输入框输入一些关键词回车之后,就会发生上述的数据发送过程,由于我们自己的IP地址是固定的,百度服务器的IP地址也是相对固定的,由于距离较远,所以要经过多个路由器进行转发,每次转发时只需更换以太网首部即可
在这里插入图片描述

C:接受数据

4:以太网驱动处理

所以主机收到以太网包后,首先会从以太网的包首部找到MAC地址进行判断,如果和本机MAC地址相同则认定为是发送给自己的包,然后接着查找以太网包首部中的类型域以确定是什么类型的包(比如说IP包);反之如果不相同则直接丢弃数据
在这里插入图片描述
3:IP模块

IP模块收到以太网驱动传回的数据后,也分析IP包首部,比如判断包首部中的IP地址是否与本机的IP地址匹配,如果匹配就继续查找上层协议,如果上层是TCP就传递给TCP处理。对于有路由器的情况下,接收端地址往往不是自己的地址,所有就要进行路由转发等操作

2:TCP模块

1:应用程序

在这里插入图片描述

二:网络中的地址

(1)MAC地址

MAC地址用于识别数据链路中互连的结点。
在这里插入图片描述
MAC地址有48个比特位,地址一般会被烧入到ROM中,因此MAC地址在世界上都是独一无二的(也有例外)
在这里插入图片描述

(2)IP地址

MAC地址是用来标识同一个链路中不同计算机的标识码。但是在网络传输中,也必须要有一个地址信息,一般叫做IP地址,用于在连接到网络中的所有主机中识别出进行通信的目标地址
在这里插入图片描述
无论一台主机与哪种数据链路连接(比如以太网电缆或者无线局域网),其IP地址都将保持不变。也就是IP地址其实是和之前的进程地址空间,“Linux下一切皆文件”采用了相同的思想——抽象,虚拟化

IP地址是一个4个字节,32位的整数,IP地址在计算机内部将以二进制方式处理,但是这样的表示方法不太好,所以一般采用点分十进制的方式表示,也就是将32位IP地址每8位为一组,分为4组,每组以"."隔开,再将每组数转化为十进制。比如192.168.0.1

在这里插入图片描述

在这里插入图片描述

(3)端口号

①:基本概念

数据链路和IP中的地址,分别指的是MAC地址和IP地址,前者用来识别同一链路中不同的计算机,后者用来识别TCP/IP网络中互连的主机和路由器。

在传输层中也有类似的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序,因此它也被称为程序地址

②:端口号确定方法

系统端口号范围为0-65535,0-1023为知名端口号,这些端口号预留给服务端程序,例如

  • ssh:22
  • ftp:21
  • telnet:23
  • http:80
  • https:443

除了知名端口号外,还有一些端口号也被正式注册,他们分布在1024到49151的数字之间。除此之外,剩余的49152-65535之间的端口号将会交由操作系统进行自动分配,以保证端口号不会冲突

三:五元组

在TCP/IP协议中,使用五元组来唯一标识一个网络通信

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

在这里插入图片描述
五元组在网络通信中的作用,类似于发送快递

在这里插入图片描述
可以在cmd中,输入 netstat -ano 查看网络数据传输中的五元组信息

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/143602.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch-使用入门

_cat /_cat/nodes:查看所有节点 接口:GET http://192.168.177.134:9200/_cat/nodes /_cat/health:查看ES健康状况 接口:GET http://192.168.177.134:9200/_cat/health /_cat/master:查看主节点信息 接口:G…

【Azure 架构师学习笔记】-Azure Logic Apps(3)-演示1

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Logic Apps】系列。 接上文【Azure 架构师学习笔记】-Azure Logic Apps(2)-组件介绍 前言 前面两篇文章大概介绍了一些理论知识,但是为用而学才是最重要的,所以接下来做…

word排版时如何保证每张图片大小一样?

问题描述 为了保证文档的美观性,在对图片进行排版时,最好保证图片的大小一致,尤其是多张图片组成一张大图时。 如果一张张图片调整大小,那真的是毫无技术含量的耗时工作。 解决方案 在这提出一种借助表格的解决办法。比如有4张…

Parasoft发布最广泛的MISRA规则覆盖-C/C++test最新版本正式上线!

作为拥有30多年自动化软件测试经验的全球领导者Parasoft宣布发布Parasoft C/Ctest的最新2022.2版本,支持MISRA C:2012修正案3和MISRA C 202x的草案版本。Parasoft针对C和C软件开发的统一、完全集成的测试解决方案的最新版本,帮助团队实现自动化静态分析和…

【java入门系列三】java基础-控制结构

学习记录🤔分支控制if-elseswitch分支接收字符for循环控制while循环do-while打印金字塔break终止-可以用label:表明continue与break类似return循环中表示直接退出方法(函数),主方法直接结束字符串比较trick讨论总结谢谢点赞交流!(…

外观模式

外观模式 1.外观模式介绍 1.外观模式(Facade),也叫“过程模式:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 2.外观模式通过定义一个一…

Linux(06)之获取内核代码

Linux(06)之获取内核代码 Author:OnceDay Date:2023年1月5日 漫漫长路,有人对你微笑过嘛… 参考文档: 《Linux内核设计和实现》 1.概述 linux内核的基本架构如下: 所以每个处理器运行的地方只有以下可能&#xf…

带你玩转指针——指针进阶(二)

上次我们说到了函数指针,对于函数指针大家还不太清楚的参考,指针进阶(一)http://t.csdn.cn/z5cjM函数指针数组数组是存放相同类型的空间,前面我们已经学习了指针数组int* arr[10] 每个元素是int*那么我们把函数的地址存…

grpc实现c++异步非阻塞stream

grpc实现c异步非阻塞stream 参考文章 Non-blocking single-threaded streaming C servergRPC C async api doc and sample codegrpc异步stream server端demo 序言 原来一直是用着同步阻塞的grpc stream。由于不想再创建新的线程来监听grpc stream的新消息了,所以就…

怎么提高程序设计能力?可以参考程序-设计原则,程序-设计模式

怎么提高程序设计能力? 简单说下我的方式方法: 【程序架构】 借鉴设计模式和设计原则 【程序业务】 多理解客户需求,理解后,做竞品逻辑分析,分析出其逻辑结构,和数据结构 ; 再根据客户需求…

自己有工厂,怎样接外贸订单?

很多做外贸的小工厂和小型加工厂,除了传统的营销渠道外,也不知道如何做、才能接到外贸订单。小工厂想获得外贸订单,可通过以下7个方法:1、注册一些外贸B2B平台,发布产品,等待客户询盘外贸B2B平台太多了&…

商务车改装之奔驰威霆改装

今天来看看这台车的改装效果,首先外观改成GLS的一个包围。同时大灯换了一个三道杠的运动大灯。运动大灯加上包围,是不是时尚了很多。再来看看威霆内饰,白红相间的色彩搭配,仪表台换成一个大连屏的仪表台,带着飞机一样的…

4路DI开关检测计数器NPN/PNP输入,Modbus TCP协议,WiFi模块YL160频率测量 计数器

特点:● 4路开关量输入,支持NPN和PNP输入● DI每一路都可用作计数器或者频率测量● 支持Modbus TCP 通讯协议● 可以设置每转脉冲数用于转速测量● 内置网页功能,可以通过网页查询电平状态● 可以通过网页设定输出状态● 宽电源供电范围&…

OPC Expert v8.1.2211 Crack

像专业人士一样解决您的 OPC 和 DCOM 连接问题 [无需经验] 快速修复 OPC 和 DCOM 错误 使用 OPC Expert,您无需任何经验即可解决和修复 OPC 连接问题。OPC Expert 为您完成繁重的工作,以快速自动诊断 OPC 和 DCOM 问题……Ω578867473而且还不止于此。OP…

基于Java+SpringBoot+vue+element实现餐厅点餐系统平台

基于JavaSpringBootvueelement实现餐厅点餐系统平台 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文章目录基于JavaSpringBo…

ATGM336H-5N定位导航模块介绍

ATGM336H-5N定位导航模块简介ATGM336H-5N系列模块是9.7X10.1尺寸的高性能BDS/GNSS全星座定位导航模块系列的总称。该系列模块产品都是基于中科微第四代低功耗GNSSSOC 单芯片—AT6558,支持多种卫星导航系统,包括中国的BDS(北斗卫星导航系统&am…

基于Java+SpringBoot+vue+element实现火车订票平台管理系统

基于JavaSpringBootvueelement实现火车订票平台管理系统 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取…

足球视频AI(五)——球员与球的对象跟踪

一、基础概念 在之前的四节中,我们尝试解决: 1,球员识别、足球识别、裁判识别; 2,队伍的分类 3,平面坐标的换算 存在关键的问题是:每一帧的画面,每次都是重新识别,无…

【OpenCV】数字图像的表示 | 图像IO操作接口 | 图像混合操作

Ⅰ. 数字图像的表示 0x00 位数 计算机采用0/1编码的系统,数字图像也是利用0/1来记录信息。 我们平常接触的图像都是8位数图像,包含0~255灰度。 0:代表最黑 1:表示最白0x01 二值图像 一幅二值图像的二维矩阵仅由0、1…

VTK-vtkAbstractTransform及其子类

前言:本博文主要研究vtkAbstractTransform及其子类的实现原理,以及由此扩展的类。 目录 vtkAbstractTransform vtkGeneralTransform vtkGeoSphereTransform(9.0.3中没有该接口) vtkGeoTransform(9.0.3中没有该接口) vtkHomogeneousTransform vtkId…