🔥博客主页: 我要成为C++领域大神
🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】
❤️感谢大家点赞👍收藏⭐评论✍️
本博客致力于分享知识,欢迎大家共同学习和交流。
一、OSI七层参考模型(Open System Interconnection:开放系统互连)
应用层,专门用于应用程序。与其他计算机进行通讯的一个应用,解决最终通信双方数据传输问题,即不同结点上两个对应应用进程之间的通信。 协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP等。
表示层,定义数据格式以及加密。(在五层模型里面已经合并到了应用层)。 格式有,JPEG、ASCll、DECOIC、加密格式等。数据加密解密,数据解压缩,图片/视频编码
会话层,不同机器上的用户之间建立以及管理会话
在会话层及以上的高层次中,数据传送的单位不再另外命名,统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。定义了如何开始、控制和终止一个会话。(在五层模型里面已经合并到了应用层)。对应主机进程,指本地主机与远程主机正在进行的会话。
传输层 ,接受来自上一层的数据,在必要时把数据进行分割,并将这些数据交给网络层,且保证这些数据段有效到达对端
提供端对端的通信管理。 定义传输数据的协议端口号,以及流控和差错校验。协议有:TCP UDP等,数据包一旦离开网卡即进入网络传输层。
TCP:Transmission Control Protocol 传输控制协议,提供一种面向连接的、可靠的、基于字节流的传输层通信协议,有流量控制和差错控制,使用TCP协议的应用比如邮件的接收和发送、文件传输、远程登录。需要数据稳定和完整性比较高的场景多使用TCP协议。
UDP:User Datagram Protocol 用户数据报协议,提供一种无连接的、高效率、低可靠性的数据传输服务,使用UDP协议的应用比如音视频聊天、在线游戏王者荣耀、工业物联网数据传输等。需要数据时效性比较高的场景多使用UDP协议
线程
端口:一个应用程序可以使用多个端口号,但是一个端口号只能被一个应用程序使用。先启用,先占用
socket(套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。
网络层,控制子网的运行,如逻辑编址、分组传输、路由选择。
进行逻辑地址寻址,实现不同网络之间的路径选择。(路由选择) 协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP。在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。
数据链路层,物理寻址,同时将原始比特流转变为逻辑传输线路
采取差错检测、差错控制、流量控制等方法将有差错的物理线路变为无差错的数据链路。传输介质为“帧”。
物理层,机械、电子、定时接口通信信道上的原始比特流传输
作用是 建立、维护、断开物理连接。物理层实际上就是布线、光纤、网卡和其它用来把两台网络通信设备连接在一起的东西(甚至一个信鸽也可以被认为是一个1层设备)。物理层设置目的就是屏蔽通信设备和通信技术,只需要考虑如何使用物理层服务。传输介质为“比特”。
七层模型小结
由于OSI是一个理想的模型,因此一般网络系统只涉及其中的几层,很少有系统能够具有所有的7层,并完全遵循它的规定。在7层模型中,每一层都提供一个特殊的网络功能。从网络功能的角度观察:下面4层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主;第4层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;而上3层(会话层、表示层和应用层)则以提供用户与应用程序之间的信息和数据处理功能为主。简言之,下4层主要完成通信子网的功能,上3层主要完成资源子网的功能。
二、TCP/IP分层模型
对于同一台设备上的进程间通信,有很多种方式,比如有管道、消息队列、共享内存、信号等方式,而对于不同设备上的进程间通信,就需要网络通信,而设备是多样性的,所以要兼容多种多样的设备,就协商出了一套通用的网络协议。
网络接口层
网络接口层包括用于协作IP数据在已有网络介质上传输的协议。
它定义像地址解析协议这样的协议,提供 TCP/IP 协议的数据结构和实际物理硬件之间的接口。
可以理解为:确定网络数据包的形式。
网络层
网络层对应于 OSI 七层参考模型的网络层,本层包含 IP 协议、RIP 协议,负责数据的包装、寻址和路由。同时还包含网间控制报文协议用来提供网络诊断信息;
可以理解为:该层能确定计算机的位置。
传输层
传输层对应于 OSI 七层参考模型的传输层,它提供两种端到端的通信服务。其中 TCP 协议提供可靠的数据流运输服务,UDP 协议提供不可靠的用户数据报服务。
TCP:三次握手、四次挥手(面向连接,可靠);UDP:面向无连接
应用层
应用层对应于 OSI 七层参考模型的应用层和表达层会话层;
TCP/IP 协议族常用协议
应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等。
传输层:TCP,UDP。
网络层:IP,ICMP,OSPF,EIGRP,IGMP。
数据链路层:SLIP,CSLIP,PPP,MTU。
重要的 TCP/IP 协议族协议介绍如下:
IP(Internet Protocol,网际协议)是网间层的主要协议,任务是在源地址和和目的地址之间传输数据。IP 协议只是尽最大努力来传输数据包,并不保证所有的包都可以传输到目的地,也不保证数据包的顺序和唯一。
IP 定义了 TCP/IP 的地址,寻址方法,以及路由规则。现在广泛使用的 IP 协议有 IPv4 和 IPv6 两种:IPv4 使用 32 位二进制整数做地址,一般使用点分十进制方式表示,比如 192.168.0.1。
IP 地址由两部分组成,即网络号和主机号。故一个完整的 IPv4 地址往往表示为 192.168.0.1/24 或 192.168.0.1/255.255.255.0 这种形式。
IPv6 是为了解决 IPv4 地址耗尽和其它一些问题而研发的最新版本的 IP。使用 128 位整数表示地址,通常使用冒号分隔的十六进制来表示,并且可以省略其中一串连续的 0,如 fe80::200:1ff:fe00:1。目前使用并不多!
ICMP(Internet Control Message Protocol,网络控制消息协议)是 TCP/IP 的核心协议之一,用于在 IP 网络中发送控制消息,提供通信过程中的各种问题反馈。ICMP 直接使用 IP 数据包传输,但 ICMP 并不被视为 IP 协议的子协议。常见的联网状态诊断工具依赖于 ICMP 协议。
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的,可靠的,基于字节流传输的通信协议。TCP 具有端口号的概念,用来标识同一个地址上的不同应用。
UDP(User Datagram Protocol,用户数据报协议)是一个面向数据报的传输层协议。UDP 的传输是不可靠的,简单的说就是发了不管,发送者不会知道目标地址的数据通路是否发生拥塞,也不知道数据是否到达,是否完整以及是否还是原来的次序。它同 TCP 一样有用来标识本地应用的端口号。所以应用 UDP 的应用,都能够容忍一定数量的错误和丢包,但是对传输性能敏感,比如流媒体、DNS 等。
ECHO(Echo Protocol,回声协议)是一个简单的调试和检测工具。服务器会原样回发它收到的任何数据,既可以使用 TCP 传输,也可以使用 UDP 传输。端口号为 7 。
DHCP(Dynamic Host Configration Protocol,动态主机配置协议)是用于局域网自动分配 IP 地址和主机配置的协议,可以使局域网的部署更加简单。
DNS(Domain Name System,域名系统)是互联网的一项服务,可以简单的将用“.”分隔的一般会有意义的域名转换成不易记忆的 IP 地址。一般使用 UDP 协议传输,也可以使用 TCP,默认服务端口号为53。
FTP(File Transfer Protocol,文件传输协议)是用来进行文件传输的标准协议。FTP 基于 TCP,使用端口号 20 来传输数据,21 来传输控制信息。
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一个简化的文件传输协议,其设计非常简单,通过少量存储器就能轻松实现,所以一般被用来通过网络传输小文件。
SSH(Secure Shell,安全Shell),因为传统的网络服务程序比如TELNET本质上都极不安全,明文传输数据和用户信息包括密码。SSH 被开发出来避免这些问题,它其实是一个协议框架,有大量的扩展冗余能力,并且提供了加密压缩的通道可以为其他协议使用。
POP(Post Office Protocol,邮局协议)是支持通过客户端访问电子邮件的服务,现在版本是 POP3,也有加密的版本 POP3S。协议使用 TCP,端口为 110。
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是现在在互联网上发送电子邮件的事实标准。使用 TCP 协议传输,端口号为 25。
HTTP(Hyper Text Transfer Protocol,超文本传输协议)是现在广为流行的 WEB 网络的基础,HTTPS 是 HTTP 的加密安全版本。协议通过 TCP 传输,HTTP 默认使用端口 80,HTTPS 使用 443。
三、C/S B/S模型
BS和CS架构是两种常见的软件架构设计模式。
BS架构(Browser/Server Architecture)是基于浏览器和服务器之间的通信,将应用程序的逻辑和数据存储在服务器上,而客户端(浏览器)只是通过网络请求数据和交互操作,客户端不固定,但是通信必须使用HTTP/HTTPS。
CS架构(Client/Server Architecture)是基于客户端和服务器之间的通信,将应用程序的逻辑和数据存储在服务器上,而客户端(终端设备)会运行一部分程序代码来处理数据和交互操作。