网络原理

【Docker篇】深入理解Docker网络原理,理解Docker0,自定义网络,网络连通 文章目录Docker网络原理1. Linux veth pair2. 理解Docker03. 容器互联--Link4. 自定义网络(推荐)5. 网络连通6. 总结 Docker网络原理 在前面的文章中跟大家说到了容器是相对独立的环境,相当于一个小型的Linux系统,外界无法直接访问,那他是怎么做的呢,这里我们先了解下Linux veth pair。 1. Linux veth pair veth pair是成对出现的一种虚拟网络设备接口,一端连着网络协议栈,一端彼此相连。如下图所示: veth pair 阅读详情

端口号
IP地址(确定主机)+端口号(在机上的应用程序)

        网络层提供的概念                                传输层提供的概念

 一个字节:

有符号-128=>+127

无符号0=>255

两个字节:

有符号:-32768=>+32767

无符号0=>65535

四个字节:

有符号:-21亿=>+21亿

无符号:0=>42亿9千万

同一个机器上,同一时刻内,端口号不能重复被绑定。

某个进程A绑定了10000端口号,此时进程B也尝试绑定10000端口,此时B就会绑定失败!

会提示Address already in use。

可以在服务命令行中输入netstat -ano查看当然那些进程正在使用

    netstat -ano|findstr 9090   查询出当前主机上是否有使用9090端口的进程

|指管道把多个命令组合起来。

两个进程不能绑定同一个端口号,好比“一山不能容二虎,除非一公一母。

如果一个服务器是TCP,一个是UDP此时,端口重复了,是不影响的(一公一母)但是如果两个TCP/两个UDP,使用同一个端口,就会出现上述绑定失败的情况了。

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Executable;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public  class TcpEchoServer {
    private ServerSocket serverSocket=null;
    private ServerSocket serverSocket1=null;
    public TcpEchoServer(int port) throws IOException {
        serverSocket = new ServerSocket(port);
        serverSocket1= new ServerSocket(port+1);
    }
    public void start() throws IOException {
        System.out.println("服务器启动");

        ExecutorService pool= Executors.newCachedThreadPool();
        while(true) {
            Socket socket = serverSocket.accept();

//            Thread t=new Thread(()->{
//                try {
//                    processConnection(socket);
//                } catch (IOException e) {
//                    throw new RuntimeException(e);
//                }
//            });
//                t.start();
            pool.submit(new Runnable (){
                public void run() {
                    try {
                        processConnection(socket);
                    } catch (IOException e) {
                        throw new RuntimeException(e);
                    }
                }
            });
        }
    }
    public void processConnection(Socket socket) throws IOException {
        System.out.printf("[%s:%d]客户端上线!\n",socket.getInetAddress(),socket.getPort());
        try (InputStream inputStream = socket.getInputStream();
        OutputStream outputStream = socket.getOutputStream()){
            Scanner scanner = new Scanner(inputStream);
            while (true){
                if(!scanner.hasNext()){
                    System.out.printf("[%s:%d]客户端下线!\n",socket.getInetAddress(),socket.getPort());
                    break;
                }
                String request = scanner.next();
                String  response=process(request);
                outputStream.write(response.getBytes()); ;
                System.out.println(response);
            }
        }catch ( Exception e ){
            e.printStackTrace();
        }finally {
            socket.close();
        }
    }

    public  String process(String request) {
        return request+"\n";
    }

    public static void main(String[] args) throws IOException {
        TcpEchoServer server = new TcpEchoServer(9090);
        server.start();
    }


}

这样就服务器有两个端口号了。

一个进程绑定多个端口,用途非常广泛的,未来工作中经常能见到

比如写一个服务器程序,首先服务器需要有一个端口号,给客户端提供业务功能.这样的端口,称为"业务端口

程序猿还需要能够对这个服务器进行更精细的控制.

比如控制让这个服务器重新加载配置/开启某个功能/重新启动/重新加载数据/修改某个选项设定...

这样的操作,经常会通过网络来进行操作.服务器就会另外绑定一个端口号,称为"管理端口"

程序员想对这个服务器进行管理操作,就通过管理端口给服务器发送一些对应的请求,服务器执行对应的逻辑

日常开发会遇到一些bug,需要去查看服务器的一些运行状态(比如服务器中的一些关键的变量是啥样的值...服务器不能直接用调试器去调试~~(调试器一调试就会把服务器阻塞住,无法给别的客户端提供服务了)

也会通过网络的方式,给服务器发调试请求,服务器返回对应的关键信息.称为“调试端口”。

UDP

学习一个网络协议,最主要就是学习的报文格式。

UDP数据报=UDP报头+UDP载荷

UDP的长度为2个字节所以UDP最长为65536(64kb).

既然UDP有上述限制,为啥发明UDP的大佬不对UDP做出改进升级呢?比如把报头中报文长度字段改成4字节,或者更长呢?

世界上任何一个主机,都可能是发送端也都可能是接收端要升级,就得全世界所有的主机都一起升级~~

相比于对UDP升级,未来诞生新的协议,取代UDP,可能是更靠谱一些的~

UDP数据报中,载荷最多能承载多少数据??

这里我们回答的仍然是64kb!!!

可以忽略不计。

UDP校验和

比特翻转

本来你传输的是0,实际到了对端变成1了.或者本来传的是1,到了对端变成0了,

受外界环境干扰导致信息改变。

第一层能够发现是否出错

第二层最好能发现是哪一位出错,并且能够进行纠错

在UDP中,校验和只能够做到第一层,发现是否有错。

校验和出错/数据内容出错

最终在B这边感受到的都是就算出来的校验和2和收到的校验和不~


CRC (循环冗余校验)

设定2个字节的变量,把数据的每个字节取出来,往这个变量上进行累加如果结果溢出超过2个字节,溢出部分就舍弃~~

MD

定长:无论输入的内容是多长,得到的结果,一定是固定长度.

分散:输入的内容,哪怕只改变一点点,最终结果都会差异很大(比特翻转,往往只是变化了一点点).

不可逆:通过原数据,计算md5,成本很低;直到md5,还原成原数据,成本非常高,仅仅理论上可行.

UDP现在最主要的用途

应用于对于性能要求比较高,但是对于可靠性要求不高的场景

网络原理面试题 摘要算法用来实现完整性,能够为数据生成独一无二的「指纹」,用于校验数据的完整性,解决了篡改的风险客户端在发送明文之前会通过摘要算法算出明文的「指纹」,发送的时候把「指纹 + 明文」一同 加密成密文后,发送给服务器,服务器解密后,用相同的摘要算法算出发送过来的明文,通过比较客户端携带的「指纹」和当前算出的「指纹」做比较,若「指纹」相同,说明数据是完整的。服务器收到客户端的第三个随机数(pre-master key)之后,通过协商的加密算法,计算出本次通信的「会话秘钥」。 阅读详情

相关推荐

Kubernetes(k8s)底层网络原理刨析

1 典型的数据传输流程图 • 一个外部的business-manager请求,首先进入集群的入口(ingress),ingress反向代理后负载到business-manager的service。Service层再负载到某个node下的具体的business-manager pod • Business-manager pod再将请求发往data-pro...

每天都有新发现 4016

网络原理的讲解

网络原理的讲解,文章待完善

m0_73740682的博客 631

Docker 网络原理

本篇是第七部分“网络篇”的第八篇。在这个部分,我会为你由浅入深的介绍 Docker 网络相关的内容。包括 Docker 网络基础及其实现和内部原理等。上篇,我为你介绍了 Docker 内部 DNS 的原理,本篇,我们来总结下 Docker 网络原理。 Docker 网络相关的原理及实践,在前面我已经基本都为大家介绍到了。本篇,对这些内容做下总结,以及扩展。 我们知道 Docker 支持多种...

k8s 生态 266

JavaEE 网络原理

JavaEE 网络原理初识 (超详细)

Mwt258的博客 2938

[捷稀 JCG Q30 Pro 刷机说明] 以刷入openwrt24.10为例

摘要: 本文详细介绍了捷稀JCG Q30 Pro路由器刷入OpenWrt 24.10系统的步骤。通过先刷入OpenWrt 23.05过渡固件,再升级Uboot,最后通过TFTP加载工厂镜像完成刷机。关键步骤包括解锁分区、刷写Uboot、进入恢复模式及配置网络。文章还提供了无线设置、Tailscale内网穿透等进阶命令,并附参考文档和固件下载链接。适用于有一定技术基础的玩家,需注意操作风险,严格按流程执行。

贤时间 7137

Tesla V100 在 Windows 下的驱动选择与模式切换实战

本文详细解析了Tesla V100专业计算卡在Windows系统下的驱动安装与模式切换实战。针对设备管理器识别但任务管理器“隐身”的常见问题,文章指出其默认TCC模式为纯计算设计,并指导用户正确选择数据中心或GRID驱动。核心在于通过注册表修改或驱动选择,在高效的TCC模式与便于监控的WDDM模式间切换,同时提供了nvidia-smi命令行监控与AI框架测试等稳定使用方案。

weixin_29247219的博客 1806

网络原理考研笔记

网络原理考研笔记

qq_44820158的博客 3969

深度学习中的注意力机制

最近两年,注意力模型(Attention Model)被广泛使用在自然语言处理、图像识别及语音识别等各种不同类型的深度学习任务中,是深度学习技术中最值得关注与深入了解的核心技术之一。本文以机器翻译为例,深入浅出地介绍了深度学习中注意力机制的原理及关键计算机制,同时也抽象出其本质思想,并介绍了注意力模型在图像及语音等领域的典型应用场景。

优快云人工智能 4万+

八、Docker:Docker网络原理

八、Docker网络原理 解决的问题:docker如何处理容器之间的网络访问 测试 # 一、查看本宿主机的 ip addr [root@kk ~]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.

诸葛小猿 2361

Winget安装失败:深入解析InternetOpenUrl()错误0x80072efd的根源与修复

本文深入解析了使用Winget时遇到的InternetOpenUrl()错误0x80072efd。该错误通常源于DNS解析失败、网络代理配置不当或系统安全策略冲突,导致无法连接软件源。文章提供了从刷新DNS、修改Hosts文件到配置代理等一套完整的诊断与修复方案,帮助开发者快速解决安装障碍,恢复Winget的正常使用。

weixin_29290259的博客 932

从SPI协议到文件系统:手把手教你用HAL库给W25Q16移植FATFS(附扇区管理优化方案)

本文详细介绍了如何在STM32平台上,通过HAL库的SPI接口为W25Q16 Flash芯片移植FATFS文件系统。文章从SPI通信基础讲起,深入解析了FATFS底层驱动(diskio.c)的移植要点,并重点探讨了针对W25Q16的4KB物理扇区特性进行扇区管理优化的两种方案,旨在帮助开发者构建稳定高效的文件存储方案。

happy2的博客 1043

网络原理,网络通信以及网络协议

​​​​💓 博客主页:从零开始的-CodeNinja之路⏩ 收录专栏:网络原理,网络通信以及网络协议。

smile_sundays的博客 4066

头歌 操作系统 课堂练习2.1:外部中断 第2关:第一次时钟中断

将答案0x796c输入到workspace/mushixun/恢复点的地址.txt中的括号里即可,随后使用kill命令防止对第三关的环境造成影响。

Yinfrey的博客 6085

【网络篇】网络原理初识

主要内容是IP地址,端口号,协议,协议分层,TCP和UDP区别,网络编程初识

fayifenjihuang的博客 893

【碳排放数据集】全球近实时网格化二氧化碳排放数据集GRACED

【碳排放数据集】全球近实时网格化二氧化碳排放数据集GRACED

WW、forever的博客 146

kylinos-SP3的软件包降级到V10-SP1中的版本

如果想再次回退到原来版本,将repo改为原来的SP3版本,然后执行yum history 查看ID号,执行yum history rollback ID就可以恢复了。此时我们发现已安装的版本是1.32-2.ky10,而sp1网络源里的版本是1.30-11.ky10,我们将降级安装网络源中的低版本软件包。近期有个客户想要把kylinos-V10-sp3的软件包降级到kylinos-V10-SP1的版本。3、以tar包为例,查看已安装版本及网络源中其他版本。1、查看系统版本,确认是V10-SP3。

太极淘的博客 1103

网络原理(TCP/IP)

网络原理涉及到计算机网络的基本组成、工作原理、以及网络通信的基础知识。而计算机网络是由节点链路和协议三个重要元素组成的系统,通过通信线路连接多个计算机及其外部设备,实现资源的共享和信息的传递。网络通信的本质是网络数据传输,计算机之间通过网络来传输数据。

2302_80521088的博客 1562

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【JavaEE】初识网络原理

本文讲解了网络原理的通信基础。如IP地址、端口号、网络协议、协议分层、TCP/IP五层网络模型以及网络数据通信时的封装和分用大致过程

L2770789195的博客 1779

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

K8s-网络原理-上篇

VXLAN 本质上是一种隧道封装技术,它使用 TCP/IP 协议栈的惯用手法“封装/解封装技术”,将 L2 的以太网帧(Ethernet frames)封装成 L4 的 UDP 数据报,然后在 L3 的网络中传输,效果就像 L2 的以太网帧在一个广播域中传输一样,不再受数据中心传输的限制。docker0处理转发的过程继续扮演二层交换机的角色。此时,docker0网桥根据数据包的目的MAC地址,在它的CAM表里查到对应的端口为veth42730c,然后把数据包发往该端口,以下是该过程的原理图。

qq_41124175的博客 1505

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

网络原理知识点总结

立志做一份最全面最通俗的网络原理知识点总结 网络原理知识点总结 网络协议层体系结构 七层体系结构概念清晰,结构完整,但是过于繁琐 折中使用五层讲解 子网划分 在A类IP地址中,每个A类网络可能有16,777,214台主机,它们处于同一广播域。在同一广播域中有这么多主机是不可能的,网络会因为广播通信而饱和。另一方面,IP地址资源越来越少。为实现更小的广播域,就需要进一步分成更小的网络。划分子网后,...

sinat_38650470的博客 9144

【JavaEE】网络原理初识

IP地址是用来标识网络主机、其它网络设备(如路由器)的网络地址,简单来说就是用于定位主机的网络地址。我们可以这样把IP地址比作一个门牌号,每家每户都会有唯一地址的门牌号,这样快递员才能准确的将快递送到。IP 地址由 32 位二进制数组成。为了记忆方便,可以将 IP 地址的 32 位二进制数进行分段,每段 8 位,共 4 段,然后将每段 8 位二进制数转换为相应的十进制数,中间用 “.” 号间隔,这种表达方式称为“点分十进制”。

weixin_53966941的博客 848

网络原理(一)

协议,同样的,也有一些。

Mylvzi的博客 909

java 网络原理/编程

主要用于表示网络主机,其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址。就像我们发送快递一样,需要知道对方的收货地址,快递员才能将包裹送到目的地。32位的二进制数,通常被分割为4个“8位二进制数”(也就是四个字节)网络号:标识网段,保证互相连接的两个网段(局域网)具有不同的标识。表示主机,同一个网段内,主机之间具有相同的网络号,但是必须有不同的主机号。IPv4:IPv4数量=2^32,大约43亿左右,而TCP/IP协议规定,每个主机都需要有一个IP地址。

2401_83177222的博客 751

【网络原理】——经典面试题

文章目录网络原理——经典面试题浏览器中输入url后,发生的事情QQ连接为什么可以长连接?HTTP连接为什么是短连接?用UDP实现可靠传输 网络原理——经典面试题 浏览器中输入url后,发生的事情 作图解释: 大题可以分为以下几步: 1、输入url之后,相对url首先要进行检查(查看url是否符合http、https协议…) 2、域名解析:先检查浏览器缓存(如果有映射信息,就直接拿取其IP地址) 3、解析完成后,建立TCP连接(三次握手) 4、客户端(浏览器)将请求信息传递给服务器端 5、服务器端接收到客户

yangnanjie的博客 349
上一篇: 测试
下一篇: 网络原理
鱼裤
博客等级 码龄4年 678粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼裤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值