网络中的七层协议与TCP/IP五层模型

article/2025/8/17 1:06:09

socket(套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。

建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket,另一个运行于服务器端,称为ServerSocket。套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接,UDP连接同理。

1464766627371148.jpg


网络七层协议

网络七层协议由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。其中物理层、数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象;传输层、会话层、表示层和应用层则被称作主机层,是用户所面向和关心的内容。

HTTP协议对应于应用层,TCP协议对应于传输层,IP协议对应于网络层,HTTP协议是基于TCP连接的,三者本质上没有可比性。 TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议,主要解决如何包装数据。Socket是应用层与TCP/IP协议族通信的中间软件抽象层,是它的一组接口。

1170656-1ceffddc43357839.jpg

网络七层协议


TCP/IP五层模型

TCP/IP五层模型的协议分为:应用层、传输层、网络层、数据链路层和物理层。中继器、集线器、还有我们通常说的双绞线也工作在物理层;网桥(现已很少使用)、以太网交换机(二层交换机)、网卡(其实网卡是一半工作在物理层、一半工作在数据链路层)在数据链路层;路由器、三层交换机在网络层;传输层主要是四层交换机、也有工作在四层的路由器。

TCP/IP协议中的应用层处理七层模型中的第五层、第六层和第七层的功能。TCP/IP协议中的传输层并不能总是保证在传输层可靠地传输数据包,而七层模型可以做到。TCP/IP协议还提供一项名为UDP(用户数据报协议)的选择。UDP不能保证可靠的数据包传输。

1170656-df46648a7fadfa42.jpg

对应关系

  • TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。

  • UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。

TCP是一种流模式的协议,UDP是一种数据报模式的协议。

在传输数据时,可以只使用传输层(TCP/IP),但是那样的话,由于没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用应用层协议(HTTP、FTP、TELNET等),也可以自己定义应用层协议。

WEB使用HTTP作传输层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发送到网络上。Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。

1170656-fe177ff611c71d76.jpg

Socket的位置



TCP连接

要想明白Socket连接,先要明白TCP连接。手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。

建立起一个TCP连接需要经过“三次握手”:

第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

三次握手(Three-way Handshake)即建立一个TCP连接时,需要客户端和服务器总共发送3个包。三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换TCP 窗口大小信息。在socket编程中,客户端执行connect()时,将触发三次握手。

1170656-a3120a20b9393a94.png

三次握手

握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”。

TCP连接的拆除需要发送四个包,因此称为四次握手(four-way handshake)。在socket编程中,任何一方执行close()操作即可产生握手(有地方称为“挥手”)操作。

1464767137254402.jpg

TCP连接的拆除

之所以有“三次握手”和“四次握手”的区别,是因为连接时当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,”你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。



HTTP连接

HTTP协议即超文本传送协议(HypertextTransfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。

HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。在HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。

HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,是HTTP的安全版。 在HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息。

https协议需要到ca申请证书;http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议;http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443;http的连接很简单,是无状态的,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。

1170656-0601aab8deb7df8d.jpeg

HTTPS

Socket连接与HTTP连接的不同

通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际应用中,客户端到服务器之间的通信防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。

而HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。



http://chatgpt.dhexx.cn/article/iTsiE04B.shtml

相关文章

蓝牙nrf52832的架构和开发

相比TI的CC254X、DIALOG的DA1458X,nordic推出的nrf51822和nrf52832在架构和开发商都有自己独特的地方。这几颗产品都是蓝牙低功耗芯片。DA1458X使用OTP硬件架构,功耗低,成本也低,但软件开发难度是个门槛,大团队才能做到…

NORDIC nrf52833使用笔记

文章目录 一、SoftDevice命名规则(一)、通用规则(二)、特定规则 二、nRF52833关键特性三、SoftDevice目录框架四、代码目录框架五、应用代码结构六、内存分配表(一)、不带bootloader时的内存分配&#xff0…

NRF52832官方SDK介绍

SDK(Software Development Kit)是指软件开发包,一般是由官方提供,主要用来介绍开发流程,提供常用的例程代码等等。可以降低开发者使用的门槛,提高开发效率,所以在开发者在进行具体的开发前必须先…

第二章 nRF52832介绍

关注嘉友创科技公众号 源码地址:https://github.com/HX-IoTnRF52832开发指南QQ群:326941601,内有pdf版,排版整洁。 nRF52832 SoC是一款功能强大,高度灵活的超低功耗多协议SoC蓝牙单芯片,嵌入式2.4GHz收发器…

NRF52832之ESB功能与NRF24L01进行2.4G通信

NRF52之ESB学习笔记 目的:为了能与NRF24L01通信,工程中加入nrf_esb.c, nrf_esb.h 先了解RADIO的各种工作状态及流程1状态 RADIO的工作状态: DISABLED RADIO无操作且功耗最低 RXRU RADIO加速进入准备接收 reception ramping up RXIDLE RADIO已经准备好开始接收…

NRF52832学习笔记(33)——低功耗实现

一、功耗模式 nRF52 上只有两种电源模式:SYSTEM_ON 和 SYSTEM_OFF 1.1 SYSTEM_ON低功耗模式 SYSTEM_ON:此状态有持续延迟和低功率子模式。当系统空闲进入 System On 模式时,默认情况下将处于低功耗子模式,通常最低功耗为 1.9uA …

NRF52832 ESB通信

esb通信,也就是纯2.4g的一个通信,据说是兼容24L01芯片,没有试过,这里是用两个nrf52832芯片做的通信实验。 相关历程参考 如下: 历程里面注释确实不多。 里面函数api介绍可以参考官方SDK文档:https://infoc…

NRF52840/NRF52832/NRF52810/NRF52811/NRF52805蓝牙5.0芯片对比

目录 一、蓝牙5.0传输速度翻倍,距离4倍、8倍数据传输量领跑物联网连接标准二、通信速度提高一倍意味着功耗减半三、四倍通信距离意味着蓝牙将抢夺Wi-Fi在智能家居市场的份额四、增加数据广播容量五、组网技术扩大应用范围六、NRF52系列BLE5.0芯片对比NRF52840-QIAA-…

nRF52833支持BLE 5.1,浅析与nRF52840参数对比

nRF52833 SoC作为Nordic nRF52系列的第五个新成员,该芯片能提供多协议解决方案,支持高温性能、测向功能,迅速成为专业照明和其他工业应用的理想选择之一。 Nordic现在提供nRF52833工程样品,这款SoC器件将提供三种不同的封装&…

【手把手带你学nRF52832/nRF52840 · (1)开发环境搭建】

1、首先去Nordic官网下载SDK SDK下载链接 ▼点击选定下图中的17.0.2版本,可以看到目前最新的版本是17.1.0 ▼下拉网页到最后,确认要下载的文件,前面的一些例程可以去掉,保留最后一个SDK文件即可,点击Download file…

NORDIC蓝牙52系列芯片选型与参数对比-NRF52805,NRF52810,NRF52811,NRF52820,NRF52832,NRF52833,NRF52840

NRF52805,NRF52810,NRF52811,NRF52820,NRF52832,NRF52833,NRF52840参数对比

nRF52832的硬件资源小结

nRF52832是NRODIC公司推出的一款带有低功耗蓝牙功能的ARM Cortex-M4 32-bit 浮点单元处理器,64MHz时钟, 存储器有两种配置:512kB flash/64kB RAM和256kB flash/32kB RAM. 最小的封装为WLCSP(wafer level chip scale package), 长宽高分别为&a…

从零开始的nrf52832蓝牙开发(1)--蓝牙协议基础

想要进行蓝牙开发,第一步肯定要对蓝牙协议有所了解。除了要对蓝牙的一些专业术语有所熟悉,还应该对蓝牙协议每层功能有一定认知。 概略图: 物理层(PHY): 物理层规定了蓝牙频段:2400MHz~2483.…

01、NRF52832介绍功耗、射频参数、芯片处理能力、内存和支持协议详解

众所周知,低功耗代蓝牙以其低功耗的优势,凸显出强大的市场竞争力,而其中 nRF52832 这一款低功耗蓝牙芯片更是受到大家的欢迎。 下面云想智慧带你从功耗、射频参数、芯片处理能力、内存和支持协议这 5 个方面来解说 nRF52832 为什么受到欢迎。…

NRF52832蓝牙芯片详细介绍及应用方案

NRF52XX系列蓝牙Soc芯片选型表 NRF52810-QFAA 处理器:ARM Cortex M4RAM:24kBFLASH:192kB支持协议:BLE、ANT、私有2.4G封装:QFN48尺寸(mm):6 x 6 NRF52810-QCAA 处理器&#xff1…

SpringBoot前端模板

Springboot支持thymeleaf、freemarker、JSP,但是官方不建议使用JSP,因为有些功能会受限制,这里介绍thymeleaf和freemarker。 一、thymeleaf模板 thymeleaf模板的前端界面为.html格式的文件,可以直接使用浏览器进行查看,方便进…

后台管理系统前端模板(html + CSS + JavaScript)

这是为大家准备的资源链接🤐🤐🤐: 提取码:0000 bootstrap_htmb.zip_免费高速下载|百度网盘-分享无限制百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速&#…

39个精美前端模板

为了方便广大程序员开发,整理了网上常见的免费的后台模板给大家。 1.Ace_admin Ace_admin 下载地址:http://pan.baidu.com/s/1dFaRCCL 2.AdminEx AdminEx 下载地址:http://pan.baidu.com/s/1gfxOkpl 3.AdminLTE AdminLTE 下载地址&a…

django 使用网上下载的前端模板

记录一下django使用前端模板的过 新手,没写过前端,不对的地方欢迎大神指教!!!谢谢。 环境 windows7 django3.X pycharm 1使用pycharm 创建django项目 2创建app,python manage.py startapp app名称 3把下载好…

基于html+css+js线上订餐系统前端模板

h180效果图 部分源码 html <!doctype html> <html> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge,chrome1"><title>Cooker</title><meta name"descriptio…