首页 > 编程语言 >网络编程(Day34)

网络编程(Day34)

时间:2024-10-25 08:52:36浏览次数:8  
标签:IP 字节 主机 Day34 编程 网络 TCP IP地址

一、学习内容

  1. 网络发展历史

    1. 发展阶段

      1. 1.APRAnet阶段---冷战产物
        2.TCP/IP协议阶段--只有TCP和IP两个协议
        3.osi开放系统互联模型
        4.TCP/IP协议族(重要)
        5.量子通信(可能)

    2. TCP/IP两个协议阶段

      1. 概念
        1. 在计算机网络中,要做到有条不紊的交换数据,需要遵循一些事先约定好的规则。这些规则明确规定了所交换的数据的格式以及有关的同步问题。为了进行网络中的数据交换而建立的规则、标准和约定称为网络协议

      2. 用来检测网络传输中差错的传输控制协议TCP
      3. 专门负责对不同网络进行互联的互联网协议IP
    3. 网络体系结构及OSI开放系统系统互联模型

      1. 原理图
      2. 网络体系结构概念
        1. 每一层都有自己独立的功能,单每一层都不可获取。通常把功能相近的协议组织在一起放在一层,协议栈。所以每一层中其实有多个协议

          1. 分层好处

            1、各层之间独立,每一层不需要知道下一层如何实现,而仅仅只需要知道该层通过层间的接口所提供的服务
            2、稳定,灵活性好,当任何一层发生变化时,只需要层间接口关系保持不变,而这层以上或以下层不受影响
            3、易于实现和维护(知道是什么功能,就到指定层去查找)
            4、促进标准化工作:每一层的功能及其所提供的服务都有了精确的说明。
            5、结构上不可分割开:各层都可以采用最合适的技术来实现
      3. TCP/IP四层结构中常见的协议

        1. 应用层
          1. HTTP(Hypertext Transfer Protocol) 超文本传输协议 万维网的数据通信的基础

          2. FTP(File Transfer Protocol) 文件传输协议 是用于在网络上进行文件传输的一套标准协议,使用TCP传输

          3. TFTP(Trivial File Transfer Protocol) 简单文件传输协议 是用于在网络上进行文件传输的一套标准协议,使用UDP传输

          4. SMTP(Simple Mail Transfer Protocol) 简单邮件传输协议 一种提供可靠且有效的电子邮件传输的协议

        2. 传输层
          1. TCP(Transport Control Protocol) 传输控制协议 是一种面向连接的、可靠的、基于字节流的传输层通信协议

          2. UDP(User Datagram Protocol) 用户数据报协议 是一种无连接、不可靠、快速传输的传输层通信协议

        3. 网络层
          1. IP(Internetworking Protocol) 网际互连协议 是指能够在多个不同网络间实现信息传输的协议

          2. ICMP(Internet Control Message Protocol) 互联网控制信息协议 用于在IP主机、路由器之间传递控制消息、ping命令使用的协议

          3. IGMP(Internet Group Management Protocol) 互联网组管理 是一个组播协议,用于主机和组播路由器之间通信

        4. 链路层
          1. ARP(Address Resolution Protocol) 地址解析协议 通过IP地址获取对方mac地址

          2. RARP(Reverse Address Resolution Protocol) 逆向地址解析协议 通过mac地址获取ip地址

        5. 注意
          1. 每层使用的协议,由下层决定,不能乱用

  2. TCP和UDP异同

    • 共同点

      属于传输层协议
    • TCP(稳定)

      1> 提供面向连接的,可靠的数据传输服务

      2> 传输过程中,数据无误、数据无丢失、数据无失序、数据无重复

          1、TCP会给每个数据包编上编号,该编号称之为序列号
          2、每个序列号都需要应答包应答,如果没有应答,则会将上面的包重复发送直到正确为止

      3> 数据传输效率低,耗费资源多。

      4> 数据收发是不同步的

          1、为了提高效率,TCP会将多个较小,并且发送间隔短的数据包,沾成一个包发送,该现象称为沾包现象
          2、该沾包算法称之为Nagle算法

      5>TCP的使用场景:对传输质量比较高的以及传输大量数据的通信,在需要可靠通信的传输场合,一般使用TCP协议

      三次握手四次挥手

    • UDP(快速)

      1> 面向无连接的,不保证数据可靠的,尽最大努力传输的协议

      2> 数据传输过程中,可能出现数据丢失、重复、失序现象

      3> 数据传输效率高,实时性高

      4> 限制每次传输的数据大小,多出部分直接忽略删除

      5> 收发是同步的,不会沾包

      6> 适用场景:发送小尺寸的,在接收到数据给出应答比较困难的情况下

  3. 网络基础相关的概念

    • 字节序

      操作系统存储多字节整数的方式。 大端:高地址存储数据低位。 小端:高地址存储数据高位。
    • 主机字节序和网络字节序

      • 概念
        • 由于多字节整数需要跨主机通信,对于不同的主机存在大小端存储的不同,会导致,即使网络传输中数据无误,也会展现出错误信息 基于此,引入了网络字节序的概念,要求多字节整数,在网络中传输时,都转换为网络字节序,网络字节序是大端存储 无论主机字节序是大端还是小端存储,发送到网络之前先转换为网络字节序。当接收端接收消息后,再将网络字节序转换为主机字节序即可。

    • 主机字节序和网络字节序相互转换的函数

      h:host 主机 to:转换 n:network网络 l:long s:short
      注意以下函数只能转换多字节整数,不包括IP地址,因为IP地址是一个字符串
      • uint16_t ntohs(uint16_t netshort);
        • 作用
          网络字节序转为16位的主机字节序
        • 参数
          网络字节序
      • uint32_t ntohl(uint32_t netlong);
        • 作用
          网络字节序转为32位的主机字节序
        • 参数
          网络字节序
      • uint16_t htons(uint16_t hostshort);
        • 作用
          将16位的主机字节序转为网络字节序
        • 参数
          主机字节序(short)
      • uint32_t htonl(uint32_t hostlong);
        • 作用
          将32位的主机字节序转为网络字节序
        • 参数
          主机字节序(int)
    • IP地址的转换函数

      • in_addr_t inet_addr(const char *cp);
        • 作用
          将IP地址(点分十进制)转换为网络字节序
        • 参数
          IP地址也就是一个字符串
      • char *inet_ntoa(struct in_addr in)
        • 作用
          将网络字地址,转为IP地址
        • 参数
          网络地址
    • 主机字节序和网络字节序的转换时机

      1、单字节整数不需要转换

      2、字符串也不需要转换

      3、只有多字节整数才需要转换。

    • ip地址

      • 概念
        • ip地址是主机在网络中的标识,每个数据包必须携带目的ip地址和原ip地址,路由器就是依照此信息进行路由选择的。也是对网络标识的二级划分

      • IP地址的种类
        • IPV4:4字节无符号整数表示(2^32)

        • LAN:局域网覆盖较小范围,传输速度快,延时低

        • WAN:广域网覆盖范围大,乃至全球范围,速度慢,延时高

        • IPV6:16字节无符号整数表示(2^128)

      • IPV4地址的划分
        IP地址 = 网络号+主机号 当前阶段IP地址分为5类
        • E:实验室或者政府特别机构,预留的IP地址。

        • D类:组播IP

        • ABC类型网络IP普通网络IP所有用户都可以使用。

        • 各类IP地址的区间计算

          • A:0.0.0.0---127.255.255.255

          • B:128.0.0.0--191.255.255.255

          • C:192.0.0.0--223.255.255.255

          • D:224.0.0.0--239.255.255.255

          • E:240.0.0.0--255.255.255.255

          • 注意:虽然属于5类网络的IP地址,但是并不是所有的网络地址都可以分配给主机使用

    • 子网掩码

      • 计算公式
        IP = 网络号 + 子网号 + 主机号
      • 概念
        • 用于ip地址的三级划分,划分时,用户可以选择划分,也可以不划分,如果不划分,就使用默认的子网掩码

          定义格式

              与IP地址一样长的32位整数,由一串连续的1和一串连续的0组成

          默认子网掩码

              子网掩码就是某类网络的 网络号全是1,主机号全是0的值。

      • 子网掩码的使用
        ip地址 & 子网掩码 ==> 子网网段
      • 总结
        • 子网网段的个数 = 2^(子网掩码中1的个数)

        • 子网网段下的主机个数 = 2^(子网掩码中0的个数)

      • 特殊的网络
        • 主机IP地址为:192.168.125.XX 当前网络:网络加主机号为0的ip地址,例如:192.168.125.0
          广播地址:网络号加主机号为255的ip地址,例如:192.168.125.255
          网关地址:网络号加主机号为1的ip地址,例如:192.168.125.1
          注意:192.168.125.0 不能使用,属于网段IP,192.168.125.255也不能使用,属于广播IP

    • 端口号 (port)

      • 概念
        端口号是能够实现网络端对端的通信。是主机中某个进程的标识,由于某个进程关闭后,再打开,pid会不断更改,所以,在启动一个进程时,可以指定端口号,标识该进程
      • 取值
        端口号是一个2字节的无符号整数,取值范围[0,65545]
      • 分类
        • 众所周知的端口号
          • 0~1023端口我们编程时候不要使用,是那些”VIP“应用程序占了。TCP和UDP的端口号是相互独立的

            • TCP 21端口:FTP文件传输服务

            • TCP 23端口:TELNET终端仿真服务

            • TCP 25端口:SMTP简单邮件传输服务

            • TCP 110端口:POP3邮局协议版本3

            • TCP 80端口:HTTP超文本传输服务

            • TCP 443端口:HTTPS加密超文本传输服务

            • UDP 53端口:DNS域名解析服务

            • UDP 69端口:TFTP文件传输服务

        • 可以使用的
          • 1024~49151,就是我们平时编写服务器使用的端口号

        • 临时端口号
          • 49152~65535,这部分是客户端运行时候动态选择的

  4. 脑图

二、总结

学习内容概述

今天的学习内容主要涉及计算机网络的基础知识和发展历程,包含网络发展阶段、TCP/IP协议的概念和分层模型、字节序的转换及相关函数、IP地址的分类与转换方法,以及端口号的概念和使用方法。通过这些内容,能够全面了解计算机网络的基本架构、数据传输的原理,以及网络通信中的关键技术。

学习难点

1. TCP与UDP的区别:

TCP协议强调数据传输的稳定性和准确性,UDP协议则追求快速和低延迟。理解它们的使用场景和特性是难点之一。

2. 字节序的转换:

主机字节序和网络字节序的转换涉及底层的字节存储方式,理解大端与小端字节序及其在网络传输中的转换逻辑是学习的一个难点。

3. IP地址与子网掩码的计算:

IP地址划分及子网掩码的计算逻辑复杂,特别是通过位运算计算子网网段,需要对二进制位的操作有清晰的理解。

4. 网络分层模型的理解:

OSI和TCP/IP模型中的各层协议之间的关系和独立性,特别是分层之间如何进行数据封装与解封,涉及较为抽象的逻辑。

主要事项

1. 网络发展阶段:

网络从初期的ARPANET发展到现代的互联网,经历了多次协议升级与技术革新。尤其是TCP/IP协议在网络发展中奠定了坚实的基础,成为网络通信的核心协议。

2. TCP/IP协议与OSI模型:

TCP/IP协议分为应用层、传输层、网络层和链路层四层,而OSI模型则分为七层。理解这两者的异同,可以帮助理解网络数据的传输流程。

3. 字节序的转换函数:

ntohl, ntohs, htonl, htons:这些函数用于在主机字节序和网络字节序之间进行转换。
IP地址转换函数:`inet_addr`用于将点分十进制IP地址转换为网络字节序,而`inet_ntoa`则用于将网络字节序转换回IP地址。

4. IP地址分类与子网掩码:

IP地址分为A、B、C、D、E五类,不同类别用于不同规模的网络。

子网掩码通过与IP地址进行按位与操作,用于确定一个网络中的子网网段。

5. 端口号:

用于标识主机中的网络进程,端口号分为知名端口、可使用端口和临时端口,了解端口号的重要性有助于更好地理解网络通信。

未来学习的重点

1. 深入理解TCP/IP协议:

今后可以重点关注TCP协议的三次握手与四次挥手机制,以及UDP协议的应用场景如实时视频、音频传输等,理解其优势与局限。

2. 字节序与数据传输的应用:

未来应注重字节序转换在实际应用中的场景,尤其是跨平台和跨网络的数据传输中字节序的处理。

3. 子网划分与CIDR表示法:

子网划分是IP地址管理中的重要内容,未来应进一步学习无类别域间路由(CIDR)表示法及其在大规模网络中的应用。

4. 网络安全与防火墙中的端口号使用:

端口号在网络通信和安全防护中有重要作用,学习防火墙对端口的管理和常见的网络攻击如端口扫描,可以提升对网络安全的理解。

标签:IP,字节,主机,Day34,编程,网络,TCP,IP地址
From: https://blog.csdn.net/weixin_65095004/article/details/143217404

相关文章

  • HTTP和HTTPS在网络通信安全中有什么区别
    HTTP和HTTPS是互联网上两种主要的通信协议,他们的区别有:1.安全性和加密;2.认证和信任度;3.搜索引擎优化(SEO);4.性能和速度;5.兼容性和配置;6.数据保护法规遵从性;7.应用场景。HTTP(超文本传输协议)是互联网的基础通信协议,但它在传输数据时不提供加密或安全保护。相比之下,HTTPS(安全的HTTP)为......
  • 树莓派在终端通过修改wifi和eth0网口的配置文件来配置网络
    因为家里的其中一个WIFI出问题了,导致树莓派连不上了,又不想接显示器来修改树莓派WIFI的账户密码,于是就想了一个办法,将eth0的IP给固定了,后续如果要更换树莓派的WIFI,就可以通过eth0的固定ip去连接树莓派了。无线网修改方式:nano /etc/wpa_supplicant/wpa_supplicant.confctrl_......
  • (神经网络和卷积入门)Pytorch小土堆跟练代码(第7天)
    本系列为跟练小土堆每集代码,然后进入李宏毅机器学习教程。在系列中会敲完所有视频中代码,并且在注释详细写出感悟和易错点。欢迎大家一起交流!最前面的软件安装和环境配置部分,可以移步我的另一个帖子一、神经网络'主要在torch.nn里''首先学的是骨架container''Module,所......
  • LSTM-ANN基于长短期记忆神经网络结合人工神经网络的多变量回归预测Matlab
    LSTM-ANN基于长短期记忆神经网络结合人工神经网络的多变量回归预测Matlab目录LSTM-ANN基于长短期记忆神经网络结合人工神经网络的多变量回归预测Matlab预测结果评价指标基本介绍程序设计参考资料预测结果评价指标训练集数据的R2为:0.99805测试集数据的R2为:0.9......
  • 408计算机网络ss1思维导图
                  ......
  • 在 Windows Server 2008 R2 中,您可以使用批处理(.bat)文件来查询 Win32_NetworkAdapterC
    在WindowsServer2008R2中,Win32_NetworkAdapterConfiguration类是Windows管理工具(WMI)基础结构的一部分。它提供了有关服务器上网络适配器配置的详细信息。您可以使用此类查询各种网络设置,例如IP地址、子网掩码、DNS服务器和DHCP设置。Win32_NetworkAdapterConfigurat......
  • IPv4 和 IPv6 是两种不同的网络协议,如果你的计算机仅配置了 IPv4 或仅配置了 IPv6,那么
    IPv4和IPv6是两种不同的网络协议,如果你的计算机仅配置了IPv4或仅配置了IPv6,那么它们之间的通信将会遇到问题,因为这两个协议并不兼容。这意味着如果你在网络中有一台设备仅支持IPv4,而另一台设备仅支持IPv6,它们之间无法直接通信。为了解决这个问题,可以考虑以下几种方法:1.......
  • 面试华为遇到了经典动态规划题 - 怎么用go、C++进行编程解决
    华为的知名很大程度上源自于在经历过被美国的制裁和打压后不仅撑住了,而且还做出了相对于自己来说技术进步程度很大的芯片​。这是一个不小的成绩​。从个人的角度上来说,华为是最难进的一家大公司之一,它的面试标准很严格​。这不仅是筛选人才,在某种程度上来说也是由于求职市场......
  • 你好,F#! 你好,函数式编程!
    如果你之前只接触过类C(cpp,java,C#等),你可能很难想象一门语言,没有continue和break,也可能从未听说过柯里化,monad等概念,或许也从未想过,编程语言中还会有单位(量纲)的特性支持。没错,如果是第一次接触类似的语言,会感觉情报源源不断的涌入大脑,有可能感到一头雾水。 但不要因此退缩,......
  • 《深度学习》YOLO v1网络架构 、损失值、NMS极大值抑制
    目录一、Yolo系列v11、核心思想2、示例3、流程图解析二、YOLO系列v1损失函数1、位置误差2、置信度误差3、类别概率损失三、NMS非极大值抑制1、概念2、步骤四、YOLOv1优缺点1、优点1)速度快2)端到端3)多尺度预测4)网络结构简单2、缺点1)对小目标检测效果差2)每个......