详解TCP/IP协议第五篇:详细介绍网络传输中的地址

这篇具有很好参考价值的文章主要介绍了详解TCP/IP协议第五篇:详细介绍网络传输中的地址。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

😉😉 学习交流群:

✅✅1:这是孙哥suns给大家的福利!

✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料

🥭🥭3:QQ群:583783824   📚📚  工作微信:BigTreeJava 拉你进微信群,免费领取!

🍎🍎4:本文章内容出自上述:Spring应用课程!💞💞

💞💞5:以上内容,进群免费领取呦~ 💞💞💞💞

详解TCP/IP协议第五篇:详细介绍网络传输中的地址,# TCP/IP专栏,网络,tcp/ip,服务器

文章目录

一:方法的调用

1:概述

2:静态链接

3:动态链接

二:方法的绑定

1:绑定概念

2:早期绑定

3:晚期绑定

三:晚期绑定示例

1:编写代码

2:jclasslib查看内容

四:早期绑定示例 

1:编写代码

2:jclasslib查看内容

五:总结说明


一:方法的调用

        我们每天都在写方法的调用,但是我们能搞明白其中的原理和JVM当中的操作步骤么?这就是本文的意义。

1:概述

        官方说法:

        在JVM中,将符号引用转换为调用方法的直接引用这个操作是跟JVM当中方法的绑定机制息息相关的。

        说人话:

        上边这段话是什么意思?我这里给大家解释一下,我们javap整理完毕字节码文件之后,我们会可以在任意一个方法中查看code下的字节码指令,很多字节码指令的后边都会跟#数字这么一个概念,这个就是符号引用,这个引用指向常量池。

        所谓将符号引用转换为方法的直接引用,就是将这个字节码指令后边的符号引用,转变为真实的方法。

        下列中的#3就是符号引用。

  public void methodB();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
         0: getstatic     #3                  // Field java/lang/System.out:Ljava/io/PrintStream;
         3: ldc           #6                  // String methodB().....
         5: invokevirtual #5                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
         8: aload_0
         9: invokevirtual #7                  // Method methodA:()V
        12: aload_0
        13: dup
        14: getfield      #2                  // Field num:I
        17: iconst_1
        18: iadd
        19: putfield      #2                  // Field num:I
        22: return

        从上述找一个例子的话,就是将偏移地址为9的字节码指令后边的#7这个符号引用用真实的方法字面量代替

2:静态链接

        官方说法:

        当一个字节码文件被装载进JVM内部时,如果被调用的目标方法在编译期可知且运行期保持不变时。这种情况下将调用方法的符号引用转换为直接引用的过程称之为静态链接。

        说人话:

        静态链接:这种方式在编译阶段就已经把符号引用直接转换为了直接引用。

3:动态链接

        官方说法:

        如果被调用的方法在编译期无法被确定下来,也就是说,只能够在程序运行期将调用方法的符号引用转换为直接引用,由于这种引用转换过程具备动态性,因此也就被称之为动态链接。

        说人话:

        动态链接:这种方式在运行阶段才能把符号引用直接转换为直接引用。

二:方法的绑定

1:绑定概念

        绑定是一个字段、方法或者类在符号引用被替换为直接引用的过程,这仅仅发生一次。这个不论是编译器确定还是运行期确定都只会发生一次,不会修改。

        对应的方法的绑定机制为:早期绑定 (Early Bindng)和晚期绑定(Late Binding)。

2:早期绑定

        官方说法:

        早期绑定就是指被调用的目标方法如果在编译期可知,且运行期保持不变时即可将这个方法与所属的类型进行绑定,这样一来,由于明确了被调用的目标方法究竟是哪一个,因此也就可以使用静态链接的方式将符号引用转换为直接引用。

        说人话:

        早期绑定是和我们的静态绑定相对应的。

3:晚期绑定

        官方说法:

        如果被调用的方法在编译期无法被确定下来,只能够在程序运行期根据实际的类型绑定相关的方法,这种绑定方式也就被称之为晚期绑定

        说人话:

        晚期绑定是和我们的动态绑定相对应的。

三:晚期绑定示例

1:编写代码

class Animal {
    public void eat(){
        System.out.println("动物进食");
    }
}

interface Huntable{
    void hunt();
}

class Dog extends Animal implements Huntable{
    @Override
    public void eat(){
        System.out.println("狗吃骨头");
    }

    @Override
    public void hunt() {
        System.out.println("捕食耗子,多管闲事");
    }
}

class Cat extends Animal implements Huntable{
    @Override
    public void eat(){
        System.out.println("猫吃鱼");
    }

    @Override
    public void hunt() {
        System.out.println("捕食耗子,天经地义");
    }
}

public class AnimalTest{
    public void showAnimal(Animal animal){
        animal.eat();//晚期绑定
    }

    public void showHunt(Huntable h){
        h.hunt();//晚期绑定
    }

}

2:jclasslib查看内容

详解TCP/IP协议第五篇:详细介绍网络传输中的地址,# TCP/IP专栏,网络,tcp/ip,服务器

详解TCP/IP协议第五篇:详细介绍网络传输中的地址,# TCP/IP专栏,网络,tcp/ip,服务器

四:早期绑定示例 

1:编写代码

class Animal {
    public void eat(){
        System.out.println("动物进食");
    }
}

interface Huntable{
    void hunt();
}

class Dog extends Animal implements Huntable{
    @Override
    public void eat(){
        super.eat();//早期绑定
        System.out.println("狗吃骨头");
    }

    @Override
    public void hunt() {
        System.out.println("捕食耗子,多管闲事");
    }
}

class Cat extends Animal implements Huntable{
    public Cat(){
        super();//早期绑定
    }
    public Cat(String name){
        this();//早期绑定
    }
    
    @Override
    public void eat(){
        System.out.println("猫吃鱼");
    }

    @Override
    public void hunt() {
        System.out.println("捕食耗子,天经地义");
    }
}

public class AnimalTest{
    public void showAnimal(Animal animal){
        animal.eat();//晚期绑定
    }

    public void showHunt(Huntable h){
        h.hunt();//晚期绑定
    }

}

2:jclasslib查看内容

        光标放到cat这个类上查看他的jclasslib

详解TCP/IP协议第五篇:详细介绍网络传输中的地址,# TCP/IP专栏,网络,tcp/ip,服务器

详解TCP/IP协议第五篇:详细介绍网络传输中的地址,# TCP/IP专栏,网络,tcp/ip,服务器         invokeSpecial是早期绑定字节码指令,invokevirtual是晚期绑定的字节码指令。

五:总结说明

        随着高级语言的横空出世,类似于Java一样的基于面向对象的编程语言如今越来越多,尽管这类编程语言在语法风格上存在一定的差别,但是它们彼此之间始终保持着一个共性,那就是都支持封装、继承和多态等面向对象特性

        既然这一类的编程语言具备多态特性,那么自然也就具备早期绑定和晚期绑定两种绑定方式。

        Java中任何一个普通的方法其实都具备虚函数的特征,也就是运行期才能确定下来,它们相当于c++语言中的虚函数 (c++中则需要使用关键字virtual来显式定义)。

        如果在Java程序中不希望某个方法拥有虚函数的特征时,则可以使用关键字final来标记这个方法。也就是一个方法不想被晚期绑定,直接把他给final修饰即可。

 

文章目录

一:通信中地址简介        

1:地址的唯一性

(一):唯一性狭义概念

(二):唯一性广义概念        

2:地址的层次性

(一):地址分层的意义

(二):MAC地址优劣

(三):IP地址的便利


详解TCP/IP协议第五篇:详细介绍网络传输中的地址,# TCP/IP专栏,网络,tcp/ip,服务器

一:通信中地址简介        

        通信传输中,发送端和接收端可以被视为通信主体。它们都能由一个所谓“地址”的信息加以标识出来。当人们使用电话时,电话号码就相当于“地址”。当人们选择写信时,通信地址加上姓名就相当于“地址”。

        在计算机通信当中,这种地址的概念显得要复杂一些。因为在实际的网络通信当中,每一层的协议所使用的地址都不尽相同。TCP/IP 通信中使用 MAC 地址、IP 地址等信息作为地。甚至在应用层中,可以将电子邮件地址作为网络通信的地址。

1:地址的唯一性

(一):唯一性狭义概念

        一个地址必须明确地表示一个主体对象。在同一个通信网络中不允许有两个相同地址的通信主体存在。这也就是地址的唯一性。

详解TCP/IP协议第五篇:详细介绍网络传输中的地址,# TCP/IP专栏,网络,tcp/ip,服务器

(二):唯一性广义概念        

        到此为止,读者可能会有一个疑问。前面提到,在同一个通信网络中不允许有两个相同地址的通信主体存在。这在单播通信中还好理解,因为通信两端都是单一的主机。那么对于广播、多播、任播通信该如何理解呢?岂不是通信接收端都被赋予了同一个地址?其实,在某种程度上,这样理解有一定的合理性。在上述这些通信方式中,接收端设备可能不止一个。为此,可以对这些由多个设备组成的一组通信赋予同一个具有唯一特性的地址,从而可以避免产生歧义,明确接收对象。

          举个简单的多播的例子。某位老师说:“一年一班的同学们请起立!”其中“一年一班”实际上就明确地指代了目对象。此时,“一年一班”就是这一次“多”的目标地址,具有唯一性。

        再举一个任播的例子。老师又说:“一年一班的哪位同学过来把你们班的学习资取走!”“一哪同”(任意一位同学)就成为了此次“任”的目地址有一性。

详解TCP/IP协议第五篇:详细介绍网络传输中的地址,# TCP/IP专栏,网络,tcp/ip,服务器

2:地址的层次性

(一):地址分层的意义

        当地址总数并不是很多的情况下,有了唯一地址就可以定位相互通信的主体。然而,当地址的总数越来越多时,如何高效地从中找出通信的目标地址将成为一个重要的问题。为此人们发现地址除了具有唯一性还需要具有层次性。其实,在使用电话和信件通信的过程当中,早已有了地址分层这种概念。例如,电话号码包含国家区号和国内区号,通信地址包含国名、省名、市名和区名等。正是有了这种层次分类才能更加快速地定位某一个地址。

详解TCP/IP协议第五篇:详细介绍网络传输中的地址,# TCP/IP专栏,网络,tcp/ip,服务器

        MAC 地址和 IP 地址在识一个通信主体时虽然都具有唯一性,但是它们当中只有 IP 地址具有层次性。 

(二):MAC地址优劣

        MAC 地址由设备的制造厂商针对每块网卡进行分别指定。人们可以通过制造商识别号、制造商内部产品编号以及产品通用编号确保 MAC 址的唯一性。然而,人们无法确定哪家厂商的哪个网卡被用到了哪个地方。虽然 MAC 地址中的制造商识别号、产品编号以及通用编号等信息在某种度上也具有一定的层次性但是对于寻找地址并没有起到任何作用,所以不能算作有层次的地址。正因如此虽然 MAC 地址是真正负责最终通信的地址,但是在实际寻址过中,IP 地址却必不可少。

(三):IP地址的便利

        那么IP 地址又是怎样实现分层的呢?一方面,IP地址由网络号和机号两部分组成。即使通信主体的IP 地址不同,若主机号不同,网络号相同,说明它们处于同一个网段。通常,同处一个网段的主机也都属于同一个部门或集团组织。另方面,网络号相同的主机在组织结构、提供商类型和地域分上都比较集中也为 IP 寻址带来了极大的方便。这也是为什么说 IP 地址具有层次性的原因。

        网络传输中,每个节点会根据分组数据的地址信息,来判断该报文应该由哪个网卡发送出去。为此,各个地址会参考一个发出接口列表。在这一点上 MAC 寻址与IP 寻址是一样的。只不过 MAC 寻址中所参考的这张表叫做地址转发表,而IP寻址中所参考的叫做路由控制表。MAC 地址转发表中所记录的是实际的 MAC地址本身,而路由表中记录的 IP 地址则是集了之后的网络号

详解TCP/IP协议第五篇:详细介绍网络传输中的地址,# TCP/IP专栏,网络,tcp/ip,服务器

详解TCP/IP协议第五篇:详细介绍网络传输中的地址,# TCP/IP专栏,网络,tcp/ip,服务器

详解TCP/IP协议第五篇:详细介绍网络传输中的地址,# TCP/IP专栏,网络,tcp/ip,服务器文章来源地址https://www.toymoban.com/news/detail-730901.html

到了这里,关于详解TCP/IP协议第五篇:详细介绍网络传输中的地址的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 哈工大计算机网络传输层协议详解之:TCP协议

    哈工大计算机网络课程传输层协议详解之:可靠数据传输的基本原理 哈工大计算机网络课程传输层协议详解之:流水线机制与滑动窗口协议 哈工大计算机网络课程传输层协议详解之:拥塞控制原理剖析 点对点通信 一个发送方、一个接收方 可靠的、按序的字节流 流水线机制

    2024年02月10日
    浏览(43)
  • 「网络编程」传输层协议_ TCP协议学习_及原理深入理解(一)[万字详解]

    「前言」文章内容大致是传输层协议,TCP协议讲解,续上篇UDP协议。 「归属专栏」网络编程 「主页链接」个人主页 「笔者」枫叶先生(fy) TCP( Transmission Control Protoco l)是一种面向连接的、可靠的传输协议,TCP全称为 \\\"传输控制协议”,TCP人如其名,要对数据的传输进行一个

    2024年02月16日
    浏览(35)
  • 「网络编程」传输层协议_ TCP协议学习_及原理深入理解(二 - 完结)[万字详解]

    「前言」文章内容大致是传输层协议,TCP协议讲解的第二篇,续上篇TCP。 「归属专栏」网络编程 「主页链接」个人主页 「笔者」枫叶先生(fy) 首先明确,TCP是面向连接的,TCP通信之前需要先建立连接,就是因为 TCP的各种可靠性保证都是基于连接的,要保证传输数据的可靠性

    2024年02月15日
    浏览(41)
  • TP-link路由器的TCP/IP协议详细介绍

      一、TCP/IP协议集把整个网络分成四层,包括网络接口层、网际层、传输层和应用层。 1、网络接口层 ,网络接口和各种通信子网接口,屏蔽不同的物理网络细节。 (1)ARP协议:地址解析协议,实现IP地址向物理地址的映射。 (2)RARP协议:反向地址解析协议,实现物理地址

    2024年02月05日
    浏览(40)
  • 嵌入式 RS485 Modbus-RTU与TCP/IP协议详细介绍

    目录 TCP/IP协议 RS485 Modbus-RTU协议 TCP/IP是一种网络通信协议,它是互联网的基础。TCP/IP协议是由两个协议组成的,分别是TCP (传输控制协议)和IP (网络协议)。 TCP (Transmission Control Protocol) 传输控制协议 TCP是一种面向连接的协议,它提供可靠的、有序的数据传输服务。 TCP协议通过

    2024年02月13日
    浏览(43)
  • 网路原理-传输层UDP,TCP/IP(确认应答,超时重传,连接管理,三次握手,四次挥手,状态转换,流量控制,滑动窗口,拥塞控制,延时应答,捎带应答,异常情况,面向字节流)-网络层(IP协议,地址管理)

    本节重点 • 理解传输层的作⽤,深⼊理解TCP的各项特性和机制 • 对整个TCP/IP协议有系统的理解 • 对TCP/IP协议体系下的其他重要协议和技术有⼀定的了解 我们之前编写完了基本的 java socket ,要知道,我们之前所写的所有代码都在应⽤层,都是为了 完成某项业务,如翻译等。

    2024年04月15日
    浏览(54)
  • 【网络编程】传输层协议——TCP协议

    TCP报头当中各个字段的含义如下 源/目的端口号 :表示数据是从哪个进程来,到发送到对端主机上的哪个进程。 32位序号/32位确认序号 :分别代表TCP报文当中每个字节数据的编号以及对对方的确认,是TCP保证可靠性的重要字段。 4位TCP报头长度 :表示该TCP报头的长度,以4字

    2024年02月17日
    浏览(56)
  • 【计算机网络】传输层协议 -- TCP协议

    认识可靠性 现在的计算机大多都是基于冯诺依曼体系结构的 虽然这里的输入设备、输出设备、内存、CPU是在同一个机器上的,但是它们彼此间却是相互独立的。如果它们之间要进行通信,那就必须要用“线”连接起来,其中连接内存和外设之间的“线”叫做IO总线,连接CP

    2024年02月14日
    浏览(53)
  • 【网络】传输层TCP协议

    目录 一、概述 2.1 运输层的作用引出 2.2 传输控制协议TCP 简介 2.3 TCP最主要的特点 2.4 TCP连接 二、TCP报文段的首部格式 三、TCP的运输连接管理 3.1 TCP的连接建立(三次握手) 3.2 为什么是三次握手? 3.3 为何两次握手不可以呢? 3.4 TCP的连接释放(四次挥手) 3.5 为什么客户端在TIME

    2024年01月23日
    浏览(37)
  • 【传输层】网络基础 -- UDP协议 | TCP协议

    端口号(Port)标识了一个主机上进行通信的不同的应用程序 在TCP/IP协议中,用 “源IP”, “源端口号”, “目的IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信(可以通过 netstat -n 查看) 0 - 1023:知名端口号,HTTP,FTP,SSH等这些广为使用的应用层协议,他

    2024年02月09日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包