嵌入式学习——Linux高级编程复习(网络编程)——day42

1. 协议

        通信双方约定的一套标准称为协议

2. OSI参考模型

        OSI模型是由国际标准化组织(ISO)制定的一个概念性的网络通信模型,它将网络通信的功能分为七个层次,从下至上分别为:

  1. 物理层(Physical Layer)物理介质链接
  2. 数据链路层(Data Link Layer)局域网内的数据传输
  3. 网络层(Network Layer)数据路由(IP地址)
  4. 传输层(Transport Layer)传输数据的方式(TCP、UDP)
  5. 会话层(Session Layer)是否需要建立会话链接
  6. 表示层(Presentation Layer)数据是否加密
  7. 应用层(Application Layer)传输的数据(a.out)

        每个层次都有明确的功能,提供特定的服务,并通过相邻层的接口与其交互。OSI模型为网络通信提供了一个逻辑分层的框架,便于理解、设计和故障排查,但它更多地作为一个理论模型存在,并未直接转化为实际的网络实现。

3. TCP/IP协议簇

        TCP/IP是一个实际使用的、更为实际的网络通信协议集合,它最初由美国国防部研发,用于互联网的通信。TCP/IP模型通常被简化为四层或五层结构,对应OSI模型的部分层次合并,具体为:

  1. 网络接口层(Link Layer) 或 物理层与数据链路层:负责实际的数据传输,包括物理媒介的控制和数据链路的建立。
  2. 网络层(Internet Layer):核心协议为IP(Internet Protocol),负责地址寻址和数据包的路由选择。
  3. 传输层(Transport Layer):主要协议有TCP(Transmission Control Protocol)和UDP(User Datagram Protocol),分别提供面向连接的可靠数据传输服务和无连接的数据传输服务。
  4. 应用层(Application Layer):包含多种协议,如HTTP、FTP、SMTP等,直接为用户提供服务,如文件传输、电子邮件、网页浏览等。

4. 应用层协议——FTP  TFTP  HTTP  SMTP  TELNET

        TCP/IP协议簇(Transmission Control Protocol/Internet Protocol)是一个分层的网络协议模型,它定义了互联网上数据传输的标准规则。应用层处于TCP/IP四层模型的最顶层,直接与用户的应用程序交互,为用户提供各种网络服务。以下是应用层中一些重要协议的详细信息:

4.1 HTTP

        1. 功能

        用于在万维网上传输数据,特别是网页的浏览。HTTP定义了客户端(通常是浏览器)和服务器之间请求与响应的消息格式和交互方式。

        2. 版本

         HTTP/1.0, HTTP/1.1, HTTP/2, HTTP/3。每个新版本都旨在提高效率和性能。

        3. 端口号

        默认80 (HTTP), 443 (HTTPS - 加密的HTTP)。

        端口号:唯一识别同一主机不同进程的号码
               (0 - 65535)(不要使用10000以内的,10000以内的是系统的)

4.2 HTTPS

        1. 功能

        是HTTP的安全版本,通过TLS/SSL协议对通信进行加密,保护数据的安全性和隐私。

        2. 端口

        默认443

4.3 DNS

        1. 功能:

        将人类可读的域名转换为IP地址,也提供其他与域名相关的信息,如MX记录(邮件交换记录)。

        2. 端口

        通常使用53(UDP/TCP)。

4.4 POP3

        1. 功能

         用于从邮件服务器下载邮件到本地客户端,并可选择删除服务器上的副本。

        2. 端口

        默认110 (非SSL), 995 (SSL)。

4.5 FTP

4.6 TFTP

4.7 SMTP

4.8 TELNET

5. 传输层协议——TCP、UDP

5.1 UDP——用户数据报协议

        1. 定义

        UDP(User Datagram Protocol,用户数据报协议)是互联网协议套件中传输层的一个重要协议,它提供了一种无连接、不可靠、面向数据报的服务。与TCP(传输控制协议)相比,UDP更简单,开销更低,适用于对实时性和效率要求较高的应用场景。

        2. 基本特征

        (1)无连接

        UDP在数据传输前不需要建立连接,发送数据前无需握手过程,减少了通信前的延迟,使得数据能够迅速发送出去。

        (2)尽最大努力交付

        UDP不保证数据包一定能够到达目的地,也不保证数据包的顺序和重复处理,数据传输的可靠性由上层协议或应用程序自己来保证。

        (3)面向数据报

        UDP以数据报为单位进行传输,每个数据报都是独立的,包含完整的源地址、目的地址和数据,适合一次性传输少量数据或者对实时性要求高的数据。

        (4)头部开销小

        UDP的头部只有8个字节,相比TCP的头部要简单得多,这使得UDP传输的效率更高。

        (5)多播和广播支持

        UDP协议天然支持多播和广播,能够向多个目标地址同时发送数据,适用于需要一对多通信的场景,如视频直播、在线游戏等。

        3. 报文结构

        (1)源端口

        标识发送端的端口号,用于接收方回复

        (2)目的端口

        标识接收端的端口号,决定数据发送到哪个应用。

        (3)长度

        整个UDP报文的长度,包括头部和数据部分

        (4)校验和

        提供基本的错误检测,确保数据报在传输过程中没有被破坏。虽然简单,但并非所有实现都强制要求计算校验和。

        4. 应用场景

        (1)实时性要求高的应用

        如在线游戏、VoIP(网络电话)、视频会议等,这些应用需要即时响应,可以容忍一定程度的数据丢失。

        (2)广播或多播

        如系统广播消息、视频直播、股票报价等,这些服务需要将数据同时发送给多个接收者。

        (3)DNS查询

        虽然DNS也支持TCP,但大部分查询使用UDP,因为查询请求和响应都很小,且对实时性有一定要求。

        (4)数据包大小受限的环境

        在带宽有限或网络条件较差的环境下,UDP较小的头部开销和无连接特性使其更为高效。

        

5.2 TCP——传输控制协议

        1. 定义

        TCP(Transmission Control Protocol,传输控制协议)是互联网协议套件中的一种面向连接的、可靠的、基于字节流的传输层通信协议。

        2. TCP的特点和功能

        (1)面向连接

        在数据传输之前,TCP要求通信双方先通过三次握手建立连接。这确保了双方准备好进行数据传输,并为双方分配必要的资源。

        (2)可靠性

        TCP通过一系列机制确保数据的可靠传输,包括序列号、确认应答、重传机制、错误校验等。序列号用来标识发送的数据段,确保数据按顺序到达;确认应答(ACK)机制让接收方确认收到的数据;如果数据段丢失或损坏,发送方会重新发送。

        (3)流量控制

        TCP使用滑动窗口协议来控制发送方的速率,以防止接收方被过快的数据流淹没。接收方会告诉发送方其接收缓冲区的可用空间大小,发送方据此调整发送速率。

        (4)拥塞控制

        TCP还通过慢启动、拥塞避免、快速重传和快速恢复等算法来动态调整数据的发送速率,以应对网络拥塞的情况。

        (5)全双工通信

        TCP允许数据同时在两个方向上传输,即通信双方可以同时发送和接收数据,提高了通信效率。

        (6)基于字节流

        TCP将数据视为无结构的字节流,没有消息边界的概念。发送方可以连续不断地发送数据,接收方也可以按任意大小读取数据。

        3. TCP头部结构

        TCP头部包含了控制信息,用于指导数据的传输和确认过程,主要包括:

        (1)源端口号和目的端口号

        标识通信双方的应用进程

        (2)序号

        发送数据段中的第一个字节的编号,用于数据排序和重传控制。

        (3)确认号

        期望从对方接收到的下一个数据段的序号,用于确认数据接收。

        (4)头部长度

        (5)保留位

        (6)标志位

        (7)窗口大小

        (8)校验和

        (9)紧急指针

        4. 连接管理

        (1)三次握手

        建立连接时,客户端发送SYN包到服务器,服务器回应SYN+ACK包,客户端再回ACK包,完成连接建立。

        (4)四次挥手

        关闭连接时,一方发送FIN包,对方回应ACK,然后对方发送FIN包,最后收到ACK,连接彻底关闭。

        5. 应用场景

        TCP因其可靠性和有序性,适用于那些对数据完整性要求高的应用,如Web浏览(HTTP)、文件传输(FTP)、电子邮件(SMTP/POP3/IMAP)、远程登录(SSH)等。尽管TCP提供高度可靠性,但相比UDP(User Datagram Protocol),其开销更大,延迟较高,不适合实时性要求极高的应用,如在线游戏、VoIP等。

        6. 特点总结

                    1.安全、可靠
                    2.数据量大
                    3.占用资源开销大

        7. 连接流程总结

                三次握手建立链接
                数据传输过程中双方通过序列号和确认号保障数据传输完整性
                四次挥手结束链接

6. 网络层协议

6.1 定义

        网络层(Network Layer)是OSI模型和TCP/IP模型中的第三层,主要负责数据包的路由选择和转发,确保数据能够从源主机传输到目标主机。网络层协议关注的是将数据从一个网络传递到另一个网络,这是通过逻辑寻址和路径选择来实现的。

6.2 分类

        以下是几种常见的网络层协议分类

        1. IP(Internet Protocol,互联网协议)

        (1)IPv4

        目前互联网上最广泛使用的版本,提供32位地址空间,采用点分十进制表示法。支持无连接的数据报服务,不保证数据包的顺序和可靠性。

        (2)IPv6

        为了解决IPv4地址耗尽问题而设计的新版本,提供128位地址空间,拥有更大的地址容量、更好的安全性以及改进的路由和配置选项。

        2. ICMP(Internet Control Message Protocol,互联网控制消息协议)

        3. IGP(Interior Gateway Protocol,内部网关协议)

        4. EGP(Exterior Gateway Protocol,外部网关协议)

        5. NDP(Neighbor Discovery Protocol,邻居发现协议)

        6. MPLS(Multiprotocol Label Switching,多协议标签交换)

6.3 IPv4协议

        1. 定义

        IPv4(Internet Protocol version 4,互联网协议第4版)是互联网协议的一个版本,它是目前互联网上最广泛使用的网络层协议。

        2. 地址结构与表示

        IPv4使用32位(4字节)的地址空间,这允许有大约42亿(232232)个唯一的地址。IPv4地址通常以点分十进制表示法表示,即四个十进制数字,每个数字范围从0到255,数字之间以点(.)分隔。例如,192.168.1.1 是一个常见的IPv4地址。

        IP:192.168.0.189        管理员模式

        IP地址 = 网络位 + 主机位

        网络位:IP地址所在的网段

        主机位:在局域网内的主机编号

        子网掩码:搭配IP地址使用,区分IP地址中的网络位和主机位

                          子网掩码是1的部分对应IP地址网络位
                          子网掩码是0的部分对应IP地址主机位

        网段号:网络位不变,主机位全为0的IP地址192.168.0.0

        广播号:网络位不变,主机位全为1的IP地址(给广播号发送一个信息,所有的IP地址都能搜到)192.168.0.255

        3. 地址分类

        IPv4地址被划分为五类,A、B、C、D、E类,其中A、B、C类为主要分配给主机和网络使用的地址,D类用于多播,E类保留用于特殊用途。每类地址的网络号和主机号部分的长度不同,决定了网络规模的大小。

        (1)A类:1.0.0.0 - 126.255.255.255

        管理大规模网络

       子网掩码:255.0.0.0

        (2)B类:128.0.0.0 - 191.255.255.255

        管理大中规模网络

        子网掩码:255.255.0.0

        (3)C类:192.0.0.0 - 223.255.255.255

         管理中小规模网络

        子网掩码:255.255.255.0

        (4)D类:224.0.0.0 - 239.255.255.255

        用于组播传输(给一组人传输数据)

        (5)E类:240.0.0.0 - 255.255.255.254

        用于科研实验

        补充:

        (1)公有IP地址:能够直接上网的IP地址(路由器)
                 私有IP地址:不能直接上网的IP地址(个人主机)

        (2)MAC地址:网卡地址  物理地址(此地址不会重复,是唯一的)

        (3)IP地址是为了找某一个网段、MAC地址是为了找在局域网中找到某一个主机

                  端口号:唯一识别同一主机不同进程的号码
                  (0 - 65535)(不要使用10000以内的,10000以内的是系统的)

        (4)

        

  • 17
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值