c++ webserver/第四章 网络编程基础知识

1.C/S结构

1.优点
  1. 能充分发挥客户端 PC 的处理能力,很多工作可以在客户端处理后再提交给服务器,所以 C/S 结构

客户端响应速度快;

  1. 操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求;

  2. C/S 结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程;

  3. 安全性较高,C/S 一般面向相对固定的用户群,程序更加注重流程,它可以对权限进行多层次校

验,提供了更安全的存取模式,对信息安全的控制能力很强,一般高度机密的信息系统采用 C/S 结

构适宜。

2.缺点
  1. 客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病

毒、硬件损坏,都需要进行安装或维护。系统软件升级时,每一台客户机需要重新安装,其维护和

升级成本非常高;

  1. 对客户端的操作系统一般也会有限制,不能够跨平台

2. B/S结构

B/S 结构(Browser/Server,浏览器/服务器模式),是 WEB 兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如 Firefox 或 InternetExplorer,服务器安装 SQL Server、Oracle、MySQL 等数据库。浏览器通过 Web Server 同数据库进行数据交互。

2.优点

B/S 架构最大的优点是总体拥有成本低、维护方便、 分布性强、开发简单,可以不用安装任何专门的软件就能实现在任何地方进行操作,客户端零维护,系统的扩展非常容易,只要有一台能上网的电脑就能使用。

3.缺点
  1. 通信开销大、系统和数据的安全性较难保障;

  2. 个性特点明显降低,无法实现具有个性化的功能要求;

  3. 协议一般是固定的:http/https(无法传输大数据)

  4. 客户端服务器端的交互是请求-响应模式,通常动态刷新页面,响应速度明显降低。

3. MAC地址

1.网络设配器(网卡,网络接口器)
  1. 每个网卡都有一个唯一的MAC地址(48位串行号)
  2. 主要工作在数据链路层
  3. 功能
    1. 数据的封装和解封装
    2. 链路管理
    3. 数据编码和译码
2. MAC地址(Media Access Control Address)
  1. 又称:物理地址、硬件地址、以太网地址、局域网地址、媒体存取控制位址(直译)
  2. 第三层网络层负责 IP 地址,第二层数据链路层则负责 MAC位址 。MAC 地址用于在网络中唯一标识一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的 MAC 地址。
  3. 长度为 48 位(6个字节),通常表示为 12 个 16 进制数
    1. 前 3 个字节: 代表网络硬件制造商的编号
    2. 后 3 个字节:制造商所制造的某个网络产品(如网卡)的系列号。

4. IP地址

1.定义
  1. IP 地址是 IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址(非真实),以此来屏蔽物理地址的差异。
  2. IP 地址是一个 32 位的二进制数,通常被分割为 4 个“ 8 位二进制数”
2.特殊地址

每个类的广播地址均为:X.255.255.255;

子网掩码: X.0.0.0

环路地址:127.0.0.1,本机地址

3.类型

A类(一般用于广域网)

  1. 10.X.X.X是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。
  2. 127.X.X.X是保留地址,用做循环测试用的。

B类

  1. 172.16.0.0—172.31.255.255是私有地址
  2. 169.254.X.X是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器。就会得到其中一个IP。

C类(局域网)

  1. 192.168.X.X是私有地址。
类别最大网络数IP地址范围单个网段最大主机数私有IP地址范围
A126(2^7-2)1.0.0.1-126.255.255.2541677721410.0.0.0-10.255.255.255
B16384(2^14 - 2)128.0.0.1-191.255.255.25465534172.16.0.0-172.31.255.255
C2097152(2^21 - 2)192.0.0.1-223.255.255.254254192.168.0.0-192.168.255.255

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AxyQeGXU-1645980651104)(第四章 网络编程.assets/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3V0aWFuemkxMg==,size_16,color_FFFFFF,t_70.png)]

4.子网掩码

1.作用:

将某个 IP 地址划分成网络地址和主机地址两部分

2.计算方法

IP与网络掩码按位与. 得到的就是网络ID.其余的就是主机ID;

5.端口

1.定义

可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见,是特指TCP/IP协议中的端口,是逻辑意义上的端口

2.作用:

!!!辨识进程的编号!!!,实质是指向进程的缓冲区的标识

一个进程可以有多个端口(不同功能),但是一个端口号只能辨识一个进程(进程唯一)

3.数量

一个 IP 地址的端口可以有 65536(即:2^16)

4.特殊端口
1.普遍使用的周知端口
协议/服务名称端口号简介
ftp20、21File Transfer Protocol 文件传输协议,20用于连接,21用于传输
ssh22[Secure Shell](https://baike.baidu.com/item/Secure Shell) 安全外壳协议,专为远程登录会话和其他网络服务提供安全性的协议
telnet23不安全的文本传送
smtp25Simple Mail Transfer Protocol 简单邮件传输协议
DNS53Domain Name System 域名系统,域名解析
http80Hyper Text Transfer Protocol 超文本传输协议,用于网页浏览
pop3110Post Office Protocol
https443Hypertext Transfer Protocol Secure 超文本传输安全协议,用于安全浏览网页
www代理服务8080Apache Tomcat web server,进行网页浏览
2.注册端口(Registered Ports)

端口号从 1024 到 49151,它们松散地绑定于一些服务,分配给用户进程或应用程序,这些进程主要是用户选择安装的一些应用程序,而不是已经分配好了公认端口的常用程序。这些端口在没有被服务器资源占用的时候,可以用用户端动态选用为源端口。

3.动态端口 / 私有端口(Dynamic Ports / Private Ports)

从 1024 到 49151,它们松散地绑定于一些服务,分配给用户进程或应用程序,这些进程主要是用户选择安装的一些应用程序,而不是已经分配好了公认端口的常用程序。这些端口在没有被服务器资源占用的时候,可以用用户端动态选用为源端口。

3.动态端口 / 私有端口(Dynamic Ports / Private Ports)

动态端口的范围是从 49152 到 65535。之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。

6.网络模型

1. OSI 七层参考模型

口诀:物数网传会表应

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iVLXDd5k-1646123830054)(第四章 网络编程.assets/image-20220301122351997.png)]

2.每层意义
  1. 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。 (数据化比特流,比特率化数据)
  2. 数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验等功能。定义了如何让格式化数据以帧为单位进行传输,以及如何让控制对物理介质的访问。将比特组合成字节进而组合成帧,用MAC地址访问介质。 (封装为针)
  3. 网络层:进行逻辑地址寻址,在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。 (寻找目标主机位置)
  4. 传输层:定义了一些传输数据的协议和端口号( WWW 端口 80 等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP 特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如 QQ 聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做。 (传输数据需要传输协议,所以有了TCP/UDP)
  5. 会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求。 (保存当前连接的信息,不需要发送都再次添加)
  6. .表示层:数据的表示、安全、压缩。主要是进行对接收的数据进行解释、加密与解密、压缩与解压缩等(也就是把计算机能够识别的东西转换成人能够能识别的东西(如图片、声音等)。
  7. 应用层:网络服务与最终用户的一个接口。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。
2. TCP/IP 四层模型
1.定义:

现在 Internet(因特网)使用的主流协议族是 TCP/IP 协议族,它是一个分层、多协议的通信体系。TCP/IP协议族是一个四层协议系统,自底而上分别是数据链路层、网络层、传输层和应用层。每一层完成不同的功能,且通过若干协议来实现,上层协议使用下层协议提供的服务。

其中的TCP和IP协议最重要,所以叫TCP/IP协议族.

五层TCP/IP模型数据链路和物理层没合并

2. OSI 层数转化为 TCP/IP模型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8ai6dhTa-1646123830055)(第四章 网络编程.assets/image-20220301124040379.png)]

3.各层重要协议

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wRiHeCRS-1646123830056)(第四章 网络编程.assets/image-20220301123453740.png)]

4.各层作用
  1. 应用层:应用层是 TCP/IP 协议的第一层,是直接为应用进程提供服务的。

    • 对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了 SMTP 协议、万维网应用使用了 HTTP 协议、远程登录服务应用使用了有 TELNET 协议。
    • 应用层还能加密、解密、格式化数据。
    • 应用层可以建立或解除与其他节点的联系,这样可以充分节省网络资源。
  2. 传输层:作为 TCP/IP 协议的第二层,运输层在整个 TCP/IP 协议中起到了中流砥柱的作用。且在运输层中, TCP 和 UDP 也同样起到了中流砥柱的作用。

  3. 网络层:网络层在 TCP/IP 协议中的位于第三层。在 TCP/IP 协议中网络层可以进行网络连接的建立和终止以及 IP 地址的寻找等功能。

  4. 网络接口层:在 TCP/IP 协议中,网络接口层位于第四层。由于网络接口层兼并了物理层和数据链路层所以,网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路。

7.协议

1.定义

协议,网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序/同步。为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议(protocol),它最终体现为在网络上传输的数据包的格式

协议往往分成几个层次进行定义,分层定义是为了使某一层协议的改变不影响其他层次的协议。

2.三要素
  1. 语义,解释控制信息每个部分的意义**(要做什么)**
  2. 语法,用户数据与控制信息的结构与格式,以及数据出现的顺序;(要怎么做)
  3. 时序/同步,对事件发生顺序的详细说明。(时序表示做的顺序)
3.常见协议
  1. 应用层常见的协议有:FTP协议(File Transfer Protocol 文件传输协议)、HTTP协议(Hyper TextTransfer Protocol 超文本传输协议)、NFS(Network File System 网络文件系统)。SSH协议. DNS协议. OSIP协议(路由器,路由表.选择最短) ping
  2. 传输层常见协议有:TCP协议(Transmission Control Protocol 传输控制协议)、UDP协议(UserDatagram Protocol 用户数据报协议)。
  3. 网络层常见协议有:IP 协议(Internet Protocol 因特网互联协议)、ICMP 协议(Internet ControlMessage Protocol 因特网控制报文协议)、IGMP 协议(Internet Group Management Protocol 因特网组管理协议)。
  4. 网络接口层常见协议有:ARP协议(Address Resolution Protocol 地址解析协议,根据IP地址找MAC地址)RARP协议(Reverse Address Resolution Protocol 反向地址解析协议.根据MAC地址找IP地址)
4. UDP协议

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y31kGU2f-1646123830056)(第四章 网络编程.assets/image-20220301130726253.png)]

  1. 源端口号:发送方端口号

  2. 目的端口号:接收方端口号

  3. 长度:UDP用户数据报的长度,最小值是8字节(仅有首部)

  4. 校验和:检测UDP用户数据报在传输中是否有错,有错就丢弃

5. TCP协议

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mwaUqcQo-1646123830057)(第四章 网络编程.assets/image-20220301130940984.png)]

  1. 源端口号:发送方端口号

  2. 目的端口号:接收方端口号

  3. 序列号:本报文段的数据的第一个字节的序号

  4. 确认序号:期望收到对方下一个报文段的第一个数据字节的序号

  5. 首部长度(数据偏移):TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远,即首部长度。单位:32位,即以 4 字节为计算单位

  6. 保留:占 6 位,保留为今后使用,目前应置为 0

  7. 紧急 URG :此位置 1 ,表明紧急指针字段有效,它告诉系统此报文段中有紧急数据,应尽快传送

  8. 确认 ACK:仅当 ACK=1 时确认号字段才有效,TCP 规定,在连接建立后所有传达的报文段都必须把 ACK 置1

  9. 推送 PSH:当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立 即就能够收到对方的响应。在这种情况下,TCP 就可以使用推送(push)操作,这时,发送方TCP 把 PSH 置 1,并立即创建一个报文段发送出去,接收方收到 PSH = 1 的报文段,就尽快地 (即“推送”向前)交付给接收应用进程,而不再等到整个缓存都填满后再向上交付

  10. 复位 RST:用于复位相应的 TCP 连接

  11. 同步 SYN:仅在三次握手建立 TCP 连接时有效。当 SYN = 1 而 ACK = 0 时,表明这是一个连接请 求报文段,对方若同意建立连接,则应在相应的报文段中使用 SYN = 1 和 ACK = 1。因此,SYN 置 1 就表示这是一个连接请求或连接接受报文

  12. 终止 FIN:用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放运输连接

  13. 窗口:指发送本报文段的一方的接收窗口(而不是自己的发送窗口).拥塞窗口

  14. 校验和:校验和字段检验的范围包括首部和数据两部分,在计算校验和时需要加上 12 字节的伪头 部

  15. 紧急指针:仅在 URG = 1 时才有意义,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据),即指出了紧急数据的末尾在报文中的位置,注意:即使窗口为零时也可发送紧急数据

  16. 选项:长度可变,最长可达 40 字节,当没有使用选项时,TCP 首部长度是 20 字节,最小

6. IP协议

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uJWjr0wR-1646123830057)(第四章 网络编程.assets/image-20220301131411487.png)]

  1. 版本:IP 协议的版本。通信双方使用过的 IP 协议的版本必须一致,目前最广泛使用的 IP 协议版本号为 4(即IPv4)

  2. 首部长度:单位是 32 位(4 字节), 1代表4个字节,不然不够用.

  3. 服务类型:一般不适用,取值为 0

  4. 总长度:指首部加上数据的总长度,单位为字节

  5. 标识(identification):IP 软件在存储器中维持一个计数器,每产生一个数据报,计数器就加 1,并将此值赋给标识字段

  6. 标志(flag):目前只有两位有意义。 标志字段中的最低位记为 MF。MF = 1 即表示后面“还有分片”的数据报。MF = 0 表示这已是若干数据报片中的最后一个。标志字段中间的一位记为 DF,意思是“不能分片”,只有当 DF = 0 时才允许分片

  7. 片偏移:指出较长的分组在分片后,某片在源分组中的相对位置,也就是说,相对于用户数据段的起点,该片从何处开始。片偏移以 8 字节为偏移单位。

  8. 生存时间:TTL,表明是数据报在网络中的寿命,即为“跳数限制”,由发出数据报的源点设置这个字段。路由器在转发数据之前就把 TTL 值减一,当 TTL 值减为零时,就丢弃这个数据报。 最大跳数,防止网络不可达时数据一直在循环传输

  9. 协议:指出此数据报携带的数据时使用何种协议,以便使目的主机的 IP 层知道应将数据部分上交 给哪个处理过程,常用的 ICMP(1),IGMP(2),TCP(6),UDP(17),IPv6(41)

  10. 首部校验和:只校验数据报的首部,不包括数据部分。

  11. 源地址:发送方 IP 地址

  12. 目的地址:接收方 IP 地址

7.以太网帧
1.帧

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JWF3GzYR-1646123830058)(第四章 网络编程.assets/image-20220301132036631.png)]

  1. 目的物理地址:发送方物理地址

  2. 源物理地址:接收方物理地址

  3. 类型:0x800表示 IP、0x806表示 ARP、0x835表示 RARP

  4. 数据部分,最少46字节.原因下方

  5. CRC: 检验和

2.最少64字节的原因

以太网帧的大小为 64 - 1518字节.最少64是为了防止发送后产生冲突,对方还没收到数据.需要重新传送,但是发送方以为数据已经接受完毕,把数据丢弃了.

3.不在局域网的帧如何知道对方的MAC地址

根据ARP协议目标IP地址 就可以得到目的MAC地址.

在以太网数据帧,目的MAC地址字段填写的不是目的主机的MAC地址,而下一跳的MAC地址.

8. ARP协议(28字节,封装为MAC帧)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-93ZcDWbh-1646123830058)(第四章 网络编程.assets/image-20220301133324506.png)]

  1. 硬件类型:1 表示 MAC 地址

  2. 协议类型:0x800 表示 IP 地址

  3. 硬件地址长度:6(MAC地址长度)

  4. 协议地址长度:4 (IP地址长度)

  5. 操作:1 表示 ARP 请求,2 表示 ARP 应答,3 表示 RARP 请求,4 表示 RARP 应答

  6. 发送端IP地址: 自己的IP地址

  7. 目的端的以太网地址: 如果不知道就填:全f

  8. 目的端的IP : 目标的IP

请求MAC地址: 封装为MAC帧,然后发给上一层集线器(目的地址为;全f).在广播后获得目的端的MAC地址!

8.封装

上层协议是如何使用下层协议提供的服务的呢?其实这是通过封装(encapsulation)实现的。应用程序数据在发送到物理网络上之前,将沿着**协议栈(先进后出)**从上往下依次传递。每层协议都将在上层数据的基础上加上自己的头部信息(有时还包括尾部信息),以实现该层的功能,这个过程就称为封装。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w0igTWM0-1646123830059)(第四章 网络编程.assets/image-20220301134338530.png)]

9.分用(封装的逆过程)

当帧到达目的主机时,将沿着协议栈自底向上依次传递。各层协议依次处理帧中本层负责的头部数据,以获取所需的信息,并最终将处理后的帧交给目标应用程序。这个过程称为分用(demultiplexing)。分用是依靠头部信息中的类型字段实现的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pp0I22JT-1646123830059)(第四章 网络编程.assets/image-20220301135814429.png)]

全过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oNN1gouP-1646123830059)(第四章 网络编程.assets/image-20220301135834972.png)]

课程:https://www.nowcoder.com/study/live/504.如果侵权请及时通知

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

公仔面i

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

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

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

打赏作者

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

抵扣说明:

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

余额充值