欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > Linux网络编程第一课:深入浅出TCP/IP协议簇与网络寻址系统

Linux网络编程第一课:深入浅出TCP/IP协议簇与网络寻址系统

2025/4/19 12:22:17 来源:https://blog.csdn.net/2401_87244387/article/details/147288478  浏览:    关键词:Linux网络编程第一课:深入浅出TCP/IP协议簇与网络寻址系统

知识点1【网络发展简史】

**网络节点:**路由器和交换机组成

交换机的作用:拓展网络接口

路由:网络通信路径

1、分组交换

分组的目的:

数据量大,不能一次型传输,只能分批次传输,这里的每一批次就是每个分组。

传输单元:网络传输是有限制的。以太网传输单元最大字节数:1500Byte

同一个分组系统中,数据是等分的(每组大小是等长的)

分组的组成:

每个分组都是由首部和数据段组成

首部:存储的是分组在原数据的位置、目的主机和源主机信息

解释:每个组独立发出,并且要准确地发给目的主机,目的主机收到也要知道是谁发的。主机收到后 需要将分组 组合成一个完整的数据,也需要用到首部内的信息。

2、分组方式的交换方式:存储转发

节点收到分组,先暂时存储下来,再检查其首部,按照首部中目的地址,找到合适的节点转发出去

重组发生在目的主机上,每个节点只是数据的中转站

3、云特网发展史

因特网是从单个ARPA NET发展起来的

TCP/IP协议成为ARPA NET标准协议

TCP/IP 是协议的统称,它是一个族,并不是单指TCP/IP协议

知识点2【TCP/IP协议】(重要)

每种协议完成不同的功能

网络是分层次来管理的

分层结构(背下来)

背下来每一层,并且要知道每一层是干什么的,这一出现问题可以快速确定是哪一层的错误,并且每层对应的协议是有限的,进而确定哪个协议有问题

1、网络的分层结构:

(一)七层结构

**七层结构:**OSI/RM(Open Standard Interconnection /Reference Model)开放互联参考模型(理论上的标准)

  • 七层的解释

    **物理层:**网络卡的接口类型,电流强弱等标准。(网卡在第八层)

    **数据链路层:**负责完整的帧数据 收发,mac地址的封装和解封装。(设备 到 设备的通信)

    帧数据:能够完整独立在网络上传输的数据单元

    (在链路层上组好的报文可以直接脱离网卡,在网络上传输)

    mac地址:网卡地址

    **网络层:**负责IP报文的封装和解封装,IP地址。(主机 到 主机的通信)

    每个主机可以有多个IP地址,发数据就是封装IP地址,收数据就是解析IP地址

    一个网线连接一个网卡,为了拓展网络接口,就需要用到交换机,而连接这些拓展接口,就需要利用网卡的接口接入,一个网卡可以对应多个系统,就会有一个主机的判断,主机里又可以有多个IP地址

    交换机中就会形成MAC地址表

    **传输层:**负责端口的封装和解封装(端口 区别的是 系统的进程)(进程到进程的通信)

    **会话层:**负责数据的转发,查看数据是否能够到达目的主机,查看网络通信状态

    **表示层:**将计算机识别 的二进程数据 转换成 为用户能识别的(图片,音频等)

    **应用层:**具体应用程序的协议

(二)四层结构

**四层结构:**TCP/IP模型(事实上的标准)

  • 四层的解释

    **应用层:**具体应用程序的协议

    传输层:负责端口的封装和解封装(端口 区别是 系统的进程)(进程 到 进程的通信)

    网络层:负责IP报文的封装和解封装,IP地址。(主机 到 主机的通信)

    链路层:负责完整的帧数据 收发(帧数据:完整独立在网上传输的数据),mac地址的封装和解封装(设备 到 设备的通信)

(三)协议

应用层

FTP文件传输协议、Telnet远程登录协议、TFTP:简单文件传送协议,NFS:网络文件系统、HTTP超文本传送协议

传输层

TCP传输控制协议、UDP用户数据报协议

网络层

IP网际协议、ICMP网络控制报文协议、IGMP网络组管理协议

链路层

ARP地址解析协议、RARP逆地址解析协议

2、IP协议(网际协议)

特点:

1、尽最大可能地将数据报文 传送到目的主机

2、IP报文独立传输,不按顺序收发

3、IP报文中要包含 源IP地址 和 目的IP地址

3、TCP报文(传输控制协议)

TCP是可靠传输层协议(进程和进程的通信)、面向连接的、序号和确认序号、排序检 错、失败重传,面向大文件传输。

如HTTP、FTP、SMTP等

4、UDP协议(用户数据报 协议)

UDP协议是一种不靠谱的传输协议(进程与进程之间的通信),不连接,不排序检错,不冲传,简单应答服务,支持广播、多播

如NFS、NTP(网络时间协议)、DNS(域名解析协议)等

知识点3【地址】

1、mac地址(网卡的地址 链路层)

通过网卡可以将不同的计算机连接起来

mac是标识网卡地址编号(理论上全球唯一),mac地址可以修改,但是一般不修改

如果多人一起修改,会有mac地址不唯一的风险

以太网的mac地址是48位

window:ipconfig 与 网络属性搭配使用查询 IPv4 IPv6 mac地址

2、IP地址(重要)

IPv4 32位

IPv6 128位 专家说IPv6可以给地球上每一粒沙子分配一个IP

主要介绍IPv4

32位分为 子网ID主机ID

子网ID:IP地址中由子网掩码中 1 覆盖的连续位

主机ID:IP地址中由子网掩码中 0 覆盖的连续位

可见IP和子网掩码是相辅相成的 他们两个需要搭配起来才都有意义

子网ID:标示IP地址在哪一个网段

主机ID:标识IP地址在网段的具体位置

覆盖这里的意思是对应,并不是按位或按位与,让我们举例说明一下

注意

1、IPv4 与 子网掩码ID 配合才能确定 子网ID 和 主机ID

2、掩码的0和1不能相见,必须连续

3、IP地址的分类

IP地址分为A类,B类,C类,D类,E类

我们最常见的是A类,B类,C类

A类地址:默认8bit子网ID,第一位为0 (广域网 国家‐国家之间)

掩码:255.0.0.0

0xxx xxxx.0000 0000.0000 0000.0000 0000

0xxx xxxx.1111 1111.1111 1111.1111 1111

B类地址:默认16bit子网ID,前两位为10 (城域网 城市‐城市之间)

掩码:255.255.0.0

10xx xxxx.xxxx xxxx.0000 0000.0000 0000

10xx xxxx.xxxx xxxx.1111 1111.1111 1111

C类地址:默认24bit子网ID,前三位为110 (局域网)

掩码:255.255.255.0

110x xxxx.xxxx xxxx.xxxx xxxx.0000 0000

110x xxxx.xxxx xxxx.xxxx xxxx.1111 1111

D类地址:前四位为1110,多播地址

E类地址: 前五位为11110,保留为今后使用

注意

**网段个数:**2^(x的个数)

如A类 就是2^7

**主机个数:**2^ (主机ID的位数)- 2

这里为什么减2呢?

是因为全零全一的地址有特殊含义

全零:网段地址

全一:广播地址(如果是A类的广播地址,全世界都能收到)

4、IP地址分类(能否上外网)

共有IP:可直接连接Internet

私有IP:不可直接上Internet,可以借助代理上Internet

私有IP不能直接与共有IP进行通信

5、回环IP地址

回环地址的作用是什么呢?

ping这个地址段(127.0.0.1~127.255.255.254),大家会发现,这个地址段的任意地址都将回环到本地主机上,它的作用是用来测试本机的网卡和IP协议是否正常的

这个地址段不属于任何一个 有类比的地址类,它代表设备的本地入口地址

6、设置IP地址

windows下 图形页面设置 大家都应该尝试过,没有尝试过的可以问一下deepseek 或者其他AI。

这里我详细说一下Linux非图形式修改。

1、设置静态IP

(1)首先需要确定要修改的IP是否被占用,被占用不建议修改:ping一下,看能否打通

(2)ifconfig 查看网络的名称

(3)修改方法:可以修改IP地址 和 子网掩码

ifconfig eth0 目标IP netmask 掩码值

(4)验证是否修改成功 ifconfig

2、动态IP的设置

sudo dhcclient

3、拨号(了解即可)

7、子网掩码

子网掩码(subnet mask)又称网络掩码,地址掩码

是一个32bit由1和0组成的数值,并且1和0分别连续

作用

表明IP中的哪些位标识的是主机所在的子网 以及 哪些位标识的是主机号

特点

1、必须结合IP地址一起使用,不能单独存在

2、IP地址中由字码掩码中1 覆盖的连续位 是子网ID;其余的是主机ID

子网掩码的表现形式

192.168.220.0/255.255.255.0
192.168.220.0/24

知识点4【端口】(重要)

1、端口的概述

TCP/IP协议 采用端口标识通信的进程

系统编程中,是在同一主机操作,我们用进程ID标识进程

网络编程中,是在不同的主机操作,我们用端口标识进程

本质

端口的本质是 一段缓冲区

特点:(理解记忆)

1、同一系统,一个端口只能对应一个进程

2、同一个端口(端口号相同),在不同的系统中对应不同的进程

3、在同一个系统中,一个进程可以对应多个端口

4、一个进程拥有一个端口后,传输层送到该端口的数据全部被该进程接收,同样,进程送交传输层的数据也通过该端口被送出

不同的主机如何识别端口呢?这就需要引入端口号的概念了。

2、端口号

端口号类似于PID 标识一个进程,在网络编程中,用端口号(port)来标识一个运行的网络程序。

给端口取一个端口号,其他主机(端口号对其他主机无特殊含义,只知道将端口号发送到目标主机)要向目标主机端口发送数据,数据到了目标主机的传输层,目标主机识别端口号,来找到对应的缓冲区。

端口号是传输层可以实现不同主机的进程之间的通信。 IP地址是网络层可以实现主机与主机间的通信

mac地址使链路层可以实现设备到设备间的通信

特点

1、端口号是一个无符号短整(hu)型

2、每个端口都拥有一个端口号

3、TCP,UDP维护各自独有的端口号

这里说一下,我们之前说的一个端口标识一个进程,这句话是针对于同一个协议而言的

如在TCP协议 和UDP协议中,同一端口号(8000),在TCP协议中可以标识进程A,在UDP中标识进程B

4、网络应用程序,至少要由一个端口号

大家结合手机号理解端口

一个人(进程)可以由多个手机号(端口)

一个手机号只能打给一个人

3、端口的分类

知名端口(1~1023)

由互联网数字分配机构(IANA)根据用户需要进行统一分配

解释:由分配机构根据用户需要统一分配 例如:FTP—21,HTTP—80等 服务器通常使用的范围;若强制使用,须加root特权

动态端口(1024~65535)

应用程序通常使用的范围

应用程序可以使用知名端口,但是不建议

结束

代码重在练习!

代码重在练习!

代码重在练习!

今天的分享就到此结束了,希望对你有所帮助,如果你喜欢我的分享,请点赞收藏夹关注,谢谢大家!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词