【JavaEE】网络初识 (IP地址, 端口号, 协议, 封装和分用)

这篇具有很好参考价值的文章主要介绍了【JavaEE】网络初识 (IP地址, 端口号, 协议, 封装和分用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本章来介绍一下网络中的一些基本概念, 例如 : IP地址, 端口号, 协议, 协议分层, 封装, 分用等等.

网络通信基础

网络互联的目的是进行网络通信, 即进行网络数据传输, 更具体一点, 是网络主机的不同进程间, 基于网络传输数据.

那么在组建的网络中是如何判断从哪台主机, 将数据传输到哪一台主机呢? 这就需要用 IP地址 来标识.

一.IP地址

概念

IP地址是分配给连接到使用Internet Protocol进行通信的计算机网络上的每个设备的数字标签. 他有两个主要功能: 主机或网络接口的标识和位置寻址.

格式

IP地址是一个32位的二进制数, 通常用点分十进制来表示. 如: 192.147.1.1

特殊IP

127.*的IP地址用于环回(loop back)测试, 通常是127.0.0.1

本机环回主要用于本机到本机的网络通信 (系统内部为了性能, 不会走网络的方式传输), 对于开发网络通信的程序 (即网络编程) 而言, 常见的开发方式都是本机到本机的网络通信.


IP地址解决了网络通信时,定位网络主机的问题,但是还存在一个问题,传输到目的主机后,由哪个进
程来接收这个数据呢?这就需要端口号来标识

二.端口号

概念

端口号是一个16位无符号整数, 范围从0到65535. 它用于定位主机上的进程. 可以标识主机中, 发送数据, 接收数据的进程.

注意事项

两个不同的进程不能绑用同一个端口号, 但是一个进程可以绑定多个端口号.


有了IP和端口号, 可以定位到网路中的唯一一个进程, 但还存在一个问题, 网络通信是基于二进制0/1传输, 而网络传输的数据类型可能有很多种: 图片, 视频, 文字等等, 同一类型的数据格式也可能不同, 那么如何告诉对方发送的数据是什么样的, 该用什么方法或者格式来解析数据呢? 就要使用协议来规定双方的数据格式.

三.协议

概念

网络协议的简称, 是指网络通信经过的网络设备都必须共同遵从同样的一组约定, 规则. 如怎样建立连接, 怎样互相识别等等.

基于网络数据传输, 需要使用协议来规定双方的数据格式.通常由三要素组成:

  1. 语法: 即数据与控制信息的结构或格式

    例如打电话时, 双方都使用相同的语言: 普通话

  2. 语义: 即需要发出何种控制信息, 完成何种动作以及做出何种相应

​ 主要用来说明通信双方应该怎么做, 用于协调与差错处理的控制信息

  1. 时序: 即事件实现顺序的详细说明

​ 同步传输还是异步传输

协议最终体现为在网络上传输数据包的格式.

【JavaEE】网络初识 (IP地址, 端口号, 协议, 封装和分用),JavaEE,网络,java-ee,tcp/ip

知名协议的默认端口

系统端口号范围为 0 ~ 65535,其中:0 ~ 1023 为知名端口号,这些端口预留给服务端程序绑定广泛使
用的应用层协议,如:

21端口:预留给FTP服务器绑定FTP协议

22端口:预留给SSH服务器绑定SSH协议

23端口:预留给Telnet服务器绑定Telnet协议

80端口:预留给HTTP服务器绑定HTTP协议

443端口:预留给HTTPS服务器绑定HTTPS协议

五元组

协议用五元组来表示一个网络通信:

  1. 源IP: 标识源主机
  2. 源端口号: 标识主机中此次通信发送数据的进程
  3. 目的IP: 标识目的主机
  4. 目的端口号: 标识目的主机中此次通信接受数据的进程
  5. 协议号: 标识发送和接受双方约定的数据格式

可以在cmd中,输入 netstat -ano 查看网络数据传输中的五元组信息:

【JavaEE】网络初识 (IP地址, 端口号, 协议, 封装和分用),JavaEE,网络,java-ee,tcp/ip

如果需要过滤 (一般是通过端口号或者进程PID过滤) , 可以用 netstat -ano | findstr 过滤字符串

协议分层

协议分层最大的好处, 类似于面向接口编程: 定义好两层之间的接口规范, 双方遵循这个规范这个规范来对接.

在代码中, 类似于定义好一个接口, 一方为接口的实现类 (提供方, 提供服务) , 一方为接口的使用类 (使用方,使用服务) :

  • 对于使用方来说, 并不关心提供方是如何实现的, 只需要使用接口即可
  • 对于提供方来说, 利用封装的特性, 隐藏实现的细节, 只需要开放接口即可
OSI七层模型

OSI七层模型划分为以下七层:

【JavaEE】网络初识 (IP地址, 端口号, 协议, 封装和分用),JavaEE,网络,java-ee,tcp/ip
【JavaEE】网络初识 (IP地址, 端口号, 协议, 封装和分用),JavaEE,网络,java-ee,tcp/ip

OSI 七层模型既复杂又不实用:所以 OSI 七层模型没有落地、实现。
实际组建网络时,只是以 OSI 七层模型设计中的部分分层,也即是以下 TCP/IP 五层模型来
实现。

TCP/IP五层模型

TCP/IP是一组协议的代名词, 他还包括很多协议, 组成了TCP/IP协议簇.

采用了五层层级模型:

  • 应用层: 负责应用程序间沟通, 如简单电子邮件传输协议 (SMTP) ,文件传输协议 (FTP) , 网络远程访问协议 (Telent) 等.
  • 传输层: 负责两台主机之间的数据数据传输. 如传输控制协议 (TCP) ,能够确保数据可靠的从源主机发送到目标主机.
  • 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输线路 (也就是路由) . 路由器 (Rounter) 工作在网络层.
  • 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动, 帧同步 (就是从网线上检测到什么信号算作新帧的开始), 冲突检测 (如果监测到冲突就自动重发) , 数据差错校验等工作. 有以太网, 令牌环网, 无线LAN等标准. 交换机 (Switch) 工作在数据链路层.
  • 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线 (双绞线, 线) , 早期以太网采用的同轴电缆 (现在主要用于有线电视) , 光纤, 现在的wifi无线网使用的电磁波等都属于物理层的概念. 物理层的能力决定了最大传输速率, 传输距离, 抗干扰性等. 集线器 (Hub) 工作在物理层.

【JavaEE】网络初识 (IP地址, 端口号, 协议, 封装和分用),JavaEE,网络,java-ee,tcp/ip

四.封装和分用

  1. 不同的协议层对数据包有不同的称谓, 在传输层叫做段 (segment) , 在网络层叫做数据报 (datagram) , 在链路层叫做帧 (frame).

  2. 应用层数据通过协议栈发送到网络上时, 每层协议都要加上一个数据首部 (header) , 称为封装 (Encapsulation).

  3. 首部信息中包含了一些类似于首部多长, 载荷 (payload) 多长, 上层协议是什么等信息.

  4. 数据封装成帧后发送到传输介质上, 到达目的主机后每层协议再剥掉响应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理

下图为数据封装的过程:

【JavaEE】网络初识 (IP地址, 端口号, 协议, 封装和分用),JavaEE,网络,java-ee,tcp/ip
160942306.png&pos_id=img-xfgS2Eah-1705828659849)

下图为分用的过程:

【JavaEE】网络初识 (IP地址, 端口号, 协议, 封装和分用),JavaEE,网络,java-ee,tcp/ip文章来源地址https://www.toymoban.com/news/detail-813073.html

到了这里,关于【JavaEE】网络初识 (IP地址, 端口号, 协议, 封装和分用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【网络原理】网络通信,网络协议,协议分层,网络设备的分层,封装和分用

    前言: 大家好,我是 良辰丫 ,今天我们一起来学习网络原理,了解一些网络的基本知识以及面试题.💞💞💞 🧑个人主页:良辰针不戳 📖所属专栏:javaEE初阶 🍎励志语句:生活也许会让我们遍体鳞伤,但最终这些伤口会成为我们一辈子的财富。 💦期待大家三连,关注,点赞,

    2023年04月14日
    浏览(54)
  • <JavaEE> 理解IP协议的两个功能 -- 地址管理和路由选择

    目录 地址管理 什么是IP地址? IP地址中的网络号和主机号分别有什么作用? 什么是“IP地址枯竭的问题”? 如何解决IP地址枯竭的问题? 什么是NAT/NAPT技术? NAT技术的优点和缺点? 了解特殊的IP地址 什么是子网掩码? 路由选择 什么是路由选择? 路由选择具体是怎么选择的

    2024年04月13日
    浏览(34)
  • 【JavaEE初阶系列】——网络初识—TCP/IP五层网络模型

    目录 🚩网络的发展史 🎈局域网LAN  🎈广域网WAN 🚩网络通信基础 🎈IP地址 🎈端口号 🎈协议类型  🎈五元组 🚩协议分层  🎈什么是协议分层 🎈协议分层的好处 🎈OSI七层网络模型 🎈TCP/IP五层网络模型 💻物理层 💻数据链路层 💻网络层 💻传输层  💻应用层 🎈网络

    2024年04月15日
    浏览(33)
  • Python网络编程基础之ip地址,端口号,TCP,socket

    IP地址 IP地址 (Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。 IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。 换而言之,IP 地址就是标识网络中设备的一个地址,好比

    2024年02月02日
    浏览(37)
  • 网络层IP协议中的协议号&传输层端口号对应的服务

    ip协议是网络层协议,三层的, 协议号标识上层是什么协议 ,eg:17号表示是上层即传输层是udp协议,6号表示上层即传输层是tcp协议,89标识上层是ospf协议等等 按端口号可分为2大类: 1、公认端口(Well-KnownPorts):范围从0到1023。 2、动态端口(Dynamic Ports):范围从1024到65

    2023年04月26日
    浏览(32)
  • Java网络编程之IP,端口号,通信协议(UDP,TCP)

    ① C/S :客户端/服务器 在用户本地需要下载安装客户端程序,在远程有一个服务器端程序。 优点:画面精美,用户体验好 缺点:用户需要下载更新 ② B/S :浏览器/服务器 只需要一个浏览器,用户通过指定网址访问对应的服务器。 优点:不需要开发客户端,只需要页面+服务

    2024年02月03日
    浏览(69)
  • 【Linux】网络基础常识{OSI七层模型/ TCP/IP / 端口号 /各种协议}

    了解网络发展背景,对局域网/广域网的概念有基本认识; 了解网络协议的意义, 重点理解TCP/IP五层结构模型; 学习网络传输的基本流程,理解封装和分用; DHCP(动态主机配置协议,Dynamic Host Configuration Protocol)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:

    2024年04月14日
    浏览(48)
  • TCP/IP五层模型、封装和分用

    IP地址:表示计算机的位置,分源IP和目标IP ;举个例子:买快递,商家从上海发货,上海就是源IP,收货地址是湖北,湖北就是目标IP。 端口号:表示一个具体的应用程序,分源端口和目标端口 ,如:某个进程或服务的端口号是8080;还是买快递的例子,发货的商家,商家就

    2024年02月09日
    浏览(50)
  • TCP/IP网络参考模型(端口号、TCP滑动窗口、TCP拥塞控制、IP协议号、以太网帧)

    目录 TCP/IP四/五层模型 应用层常见协议——传输数据PDU 传输层协议——传输数据段 端口号 TCP面向连接服务CONS  TCP报文格式 TCP数据传输——ACK确认机制 TCP会话建立——三次握手 TCP会话结束——四次握手 TCP流量控制——滑动窗口协议 TCP可靠传输机制 TCP拥塞控制 UDP无面向连

    2024年02月03日
    浏览(53)
  • 【JavaEE】从收发消息的角度理解 TCP/IP 五层网络模型的封装与分用

    你问我为啥需要分层?那必然是有好处的啊! 我们来回顾一下面向接口编程有什么特点~ 对于使用方来说,不必关心提供方是如何实现的, 只需要使用接口即可; 对于提供方来说,只需要利用封装的特性,隐藏内部实现细节,对外开发接口。 而对于协议的分层也是类似,后

    2024年02月03日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包