初识网络编程

目录

  • 前言
  • 相关名词解释
  • 应用层协议——HTTP
  • 传输层协议
    • socket
    • TCP
      • 帧头格式
      • 三次握手、四次挥手
    • UDP
    • TCP的socket实现
  • 参考博文

前言

刚碰到网络编程,会出现一堆协议、概念、这层次那技术的,头都大了,还是得总结总结……
看不懂

相关名词解释

  • ✨✨网络模型
    为了使多种设备能通过网络通信和解决不同设备在网络互联中的兼容性问题,国际标准化组织制定了开放式系统互联通信参考模型(OSI),但在实际应用上采用的是TCP/IP这种四层模型。

网络模型

  • 应用层:处理并打包数据
  • 传输层:在网络中的两个节点之间提供可靠的数据传输服务
  • 网络层:负责数据包从源到目的地的路由选择
  • 协议
    互联网的本质就是一系列的网络协议,处于互联网上的两台计算机如果要实现通信,就需要遵守这些协议,比如:网线的接口类型,寻址方式,数据如何发送等一系列协议。
    网络通信是一个比较复杂的事情,需求场景复杂了,实现功能也会比较复杂。实际应用中是把这个大协议拆分成小协议(每个协议负责一部分功能),将某些协议功能类似的小协议进一步的"分类"(“分层”)。
  • ✨以太网
    以太网(Ethernet)是一种局域网(Local Area Network, LAN)技术,以太网技术本身包括了物理层和数据链路层的规范,这些规范定义了如何在局域网中传输数据帧
  • ✨✨✨IP地址
    IP地址(Internet Protocol Address)是互联网协议地址的简称,是用于在互联网上标识和定位设备的唯一数字标签。IP地址由32位(IPv4)或128位(IPv6)的二进制数组成,通常用点分十进制表示(IPv4)或冒号分隔的十六进制表示(IPv6)。
  • ✨✨✨端口号
    端口号的主要作用是表示一台计算机中的特定进程所提供的服务,即用来区分一个主机上的不同程序,因此也被称为程序地址
  • ✨MAC地址
    MAC地址,全称为媒体访问控制地址(Media Access Control Address),是一种用于网络通信的唯一标识符。MAC地址通常由12位十六进制数字组成,分为6个字节,每个字节由两个十六进制数字表示,例如:00-1A-2B-3C-4D-5E。MAC地址具有全球唯一性,每个网络设备在生产时都会被分配一个唯一的MAC地址。这种唯一性确保了在网络中不会出现地址冲突,从而保证了网络通信的顺畅。MAC地址通常被烧录在网络设备的硬件上,如网卡、路由器、交换机等。
    MAC地址与IP地址相互配合,共同完成网络通信。IP地址用于在互联网上标识设备的位置,而MAC地址则用于在局域网内标识设备。当数据在局域网内传输时,主要依赖MAC地址进行寻址;而当数据需要跨越不同网络时,IP地址则起到了关键作用。通过ARP(地址解析协议),可以将IP地址解析为MAC地址,从而实现不同网络之间的通信。

应用层协议——HTTP

这是基于TCP/IP 的应用层协议,后面单独写一篇博文总结。
http报文传输过程

这里根据上图的封装过程,详细分析一下数据在各层的叫法:

  • 链路层——数据帧frame
  • 网络层——数据包packet
  • 传输层——数据报(TCP叫segment/UDP叫datagram)
  • 每层数据封装好包含了将要发送的完整的数据信息后就是报文

传输层协议

socket

套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。通过使用 Socket,可以在不同计算机之间建立连接,并进行数据的传输和交换。
Socket 可以用于实现各种网络应用,例如:

  1. 客户端-服务器通信:通过 Socket,客户端可以与服务器建立连接并发送请求,服务器接收请求并返回响应。
  2. 网络聊天和即时通讯:通过 Socket,可以在多个用户之间实现实时的文字、音频或视频通信。
  3. 文件传输:在不同计算机之间传输文件。
  4. 远程控制:在远程计算机上执行指令或操作。
  5. P2P(点对点)通信:Socket 提供了直接的点对点通信接口,允许两个或多个计算机直接进行数据交换。

TCP

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的协议,这意味着在数据传输开始之前,必须在发送端和接收端之间建立一个连接。

  • 可靠传输:TCP提供可靠的数据传输服务,确保数据包正确无误地到达目的地。如果数据包在传输过程中丢失或损坏,TCP会重新发送数据包,直到接收端正确接收到所有数据。
  • 数据顺序:TCP保证数据包的顺序,即使在网络中传输的路径不同,接收端也能按照发送端的顺序接收数据。
  • 流量控制和拥塞控制:TCP通过滑动窗口机制实现流量控制,并通过拥塞控制算法(如慢启动、拥塞避免、快速重传和快速恢复)来避免网络拥塞。
  • 全双工通信:TCP支持全双工通信,即数据可以在两个方向上同时传输。

帧头格式

TCP帧头格式

  • ACK:确认接受标志位,ACK=1为确认接受到
  • SYN:建立连接时的同步标志位,SYN=1/ACK=0表是A请求与B建立连接;若B报文中SYN=1/ACK=1表示B同意和A建立连接
  • FIN:请求断开连接标志位
  • seq:传输报文中的数据部分的每一个字节都有它的编号,建立连接时的为初始随机序号ISN
  • ack:响应端收到信息,并准备接受的下一个数据的序号(上一数据末尾序号+1)
    ❗️❗️❗️在建立连接和正常通信两个阶段,seq的计算方法不同,具体参考博客——【转载】TCP的seq和ack号计算方法

三次握手、四次挥手

  • 三次握手

例子描述:A给B寄东西,B的看到消息要回复A收到了,如果B的回复A的没看到的话,会继续问B到底收到没有;A收到B的消息后,再嘱咐B一些东西细节,这样这个过程就建立完了
三次握手
握手的过程实际上是在通知对方自己的初始化序号ISN,也就是上图中的x和y。x和y会被当作之后传输数据的一个依据,以保证TCP报文在传输过程中不会混乱。

  • 四次挥手

描述:
1.客户端主动请求关闭通信连接
2.服务端收到请求并确认,之后一段时间仍会发送未发送完的数据
3.数据全发完后,服务端请求可以关闭连接了
4.客户端收到并确认

 四次挥手
处于TIME_WAIT状态的主动断开方,在等待完成2MSL(Maximum Segment Lifetime,指的是一个TCP报文片段在网络中最大的存活时间,具体来说,2MSL对应于一次消息的来回(一个发送和一个回复)所需的最大时间)的时间后,才真正关闭连接通道,避免因网络不可靠的,被动断开方发送FIN+ACK报文后,其主动方的ACK响应报文丢失的情况,这时候的被动断开方处于LAST-ACK状态的,由于收不到ACK确认被动方一直不能正常的进入CLOSED状态。

UDP

UDP(User Datagram Protocol,用户数据报协议用户数据报协议)是一种无连接的协议,不需要在发送端和接收端之间建立连接,可以直接发送数据。

  • 不保证可靠性:UDP不保证数据的可靠传输,如果数据包在传输过程中丢失或损坏,UDP不会重新发送数据包。
  • 无数据顺序:UDP不保证数据包的顺序,接收端可能以不同于发送端的顺序接收数据。
  • 无流量控制和拥塞控制:UDP没有流量控制和拥塞控制机制,因此它不适合需要这些机制的应用。
  • 半双工或简单全双工通信:UDP通常支持半双工通信,但也可以支持全双工通信。
  • 开销较小:UDP不需要建立连接和维护连接状态,因此它的开销比TCP小,适用于对实时性要求高的应用,如视频会议、在线游戏等。

TCP的socket实现

TCP_socket
注:这部分的代码涉及IO流,还没学,先不贴了


参考博文

【通信协议】帧、数据报、数据包的区别和联系
一文带你了解socket网络编程以及详解过程和原理
Socket的详细介绍
TCP网络编程中connect()、listen()和accept()三者之间的关系
一文讲透TCP/IP协议 | 图解+秒懂+史上最全
详解 TCP 连接的“ 三次握手 ”与“ 四次挥手 ”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/7547.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

JRTPLIB中的RTPSession与OnSSRCCollision:深入解析SSRC冲突处理机制

JRTPLIB中的RTPSession与OnSSRCCollision:深入解析SSRC冲突处理机制 一、RTP与SSRC基础1.1 RTP简介1.2 SSRC的作用二、JRTPLIB与RTPSession2.1 JRTPLIB概述2.2 RTPSession类三、SSRC冲突与OnSSRCCollision3.1 SSRC冲突的原因3.2 OnSSRCCollision回调函数3.3 OnSSRCCollision的…

【数据集】【YOLO】【目标检测】口罩佩戴识别数据集 1971 张,YOLO佩戴口罩检测算法实战训练教程!

数据集介绍 【数据集】口罩佩戴检测数据集 1971 张,目标检测,包含YOLO/VOC格式标注。 数据集中包含1种分类:{0: face_mask},佩戴口罩。 数据集来自国内外图片网站和视频截图。 检测场景为城市街道、医院、商场、机场、车站、办…

实测讯飞智作,一张照片定制属于自己的数字人

Datawhale亲测 AI应用:讯飞智作 只用一张照片,就可以定制属于自己的数字人。 这是大模型给数字人领域带来的最新震撼。 就在两周前的 AI 开发者 Talk 合肥站活动上,我们 Datawhale 的一名小伙伴玉鑫化身成数字人亮相大屏幕,为参加…

乡村景区一体化系统(门票,餐饮,便利店,果园,娱乐,停车收费

一、一体化优势 1. 提升游客体验:游客可以通过一个系统方便地完成各种消费和预订,无需在不同的地方分别处理,节省时间和精力,使游玩过程更加顺畅和愉快。 2. 提高管理效率:景区管理者能够在一个平台上集中管理多个业…

安卓编程最方便的读写资料类SharedPreferences,多个APP共享

本文介绍Android平台进行数据存储的五大方式,分别如下: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面详细讲解这五种方式的特点 第一种: 使用SharedPreferences存储数据 …

[Docker#1] 专栏前言 | 亿级高并发架构演进之路

目录 目标 一.前期演进 1. 单机架构 2. 应用数据分离架构 3. 应用集群架构 4. 读写分离/主从分离架构 5. 冷热分离架构 二. 架构 分布式数据库架构 微服务架构 容器编排架构 三. An Internet Application Architecture 理解 上层传输 框架 数据处理 主要思想 …

初识AI大模型,ollama使用,llama factory大模型微调,lama.cpp模型转换guff

最近了解了下生成式AI对话,下面是自己的一些尝试记录。 ollama 安装及使用 1、安装 我是在windows环境下安装的,很简单,访问:https://ollama.com/ ,下载windows安装包,打开安装就行了。 cmd输入ollama -v检…

Mybatis、Mybatis-Plus 调用同一个组件的查询时遇到的坑

Mybatis、Mybatis-Plus 调用同一个组件的查询时遇到的坑 Mybais-plus配置了驼峰自动命名,所以不需要在SQL里转化查询。

ssm070基于SSM框架的校园代购服务订单管理系统的设计与实现+vue(论文+源码)_kaic

毕业设计 题 目: 校园代购服务订单管理系统 作 者: 学 号: 所属学院: 专业年级: 学校导师: 职 称: 班级导师: 职 称: 完成时间…

ECharts折线图背景渐变设置

目录 引入 1.在一个HTML文件中编写两个图表 2.渐变背景 引入 如何在一个HTML文件中编写两个图表:(这个例子基于这个篇文章的基础)一篇搞懂前端获取数据-CSDN博客 一个例子: 1.在一个HTML文件中编写两个图表 重点在于名字的不重…

Webserver(4.6)poll和epoll

目录 pollclient.cpoll.c epollepoll.cclient.c epoll的两种工作模式水平触发边沿触发 poll poll是对select的一个改进 select的缺点在于每次都需要将fd集合从用户态拷贝到内核态,开销很大。每次调用select都需要在内核遍历传递进来的所有fd,这个开销也…

提高交换网络可靠性之认识STP根桥与端口角色

转载请注明出处 该实验旨在学习如何选举根桥与识别端口角色。 1.三台交换机按要求连线,改名,分别为S1,S2,S3,以S1为例: 2.在S1上配置优先级为28672 同理,在交换机S2和S3上配置其优先级为32768&…

qt QTextDocument详解

1、概述 QTextDocument是Qt框架中用于处理文本文档的类,它提供了丰富的功能和接口,用于创建、编辑和格式化文本内容。该类能够保存格式化的文本,是结构化富文本文档的容器,支持样式文本和各种文档元素,如列表、表格、…

【UE5】在材质中实现球形法线技术,常用于改善植物等表面的渲染效果

在材质中实现球形法线,这种技术常用于植被渲染等场景。通过应用球形法线可以显著提升植物再低几何体情况下的光照效果。 三二一上截图! 当然也可以用于任何你希望模型圆润的地方,下图中做了一个Cube倒角

提高交换网络可靠性之链路聚合

转载请注明出处 该实验为链路聚合的配置实验。 1.改名,分别将交换机1和交换机2改名为S1,S2,然后查看S1,S2的STP信息。以交换机1为例👇。 2.交换机S1,S2上创建聚合端口,将端口加入聚合端口。以S…

ZISUOJ 2024算法基础公选课练习一(3)

前言、 接&#xff08;2&#xff09;后完成I-J两道题 一、题目总览 二、具体题目 2.1 问题 I: 帆帆的图&#xff1a; 思路&#xff1a; 考察拓扑排序和图论&#xff08;拓扑排序也是排序&#xff0c;<滑稽>&#xff09;&#xff0c;都是模板&#xff0c;我就直接拿去…

窨井监测遥测终端RTU IP68防水强信号穿透力

在窨井的潮湿 黑暗和腐蚀性环境中 常规物联网设备往往难以生存 如何突破层层环境挑战 轻松应对极端条件 确保信号 24h不掉线&#xff0c;不延迟 不仅是对技术的突破 更是对恶劣环境的征服 ↓↓↓ 坚守 ——严苛环境下的工业设备 计讯物联工业级设备&#xff0c;专为恶劣环境设计…

python opencv3

三、图像预处理2 1、图像滤波 为图像滤波通过滤波器得到另一个图像。也就是加深图像之间的间隙&#xff0c;增强视觉效果&#xff1b;也可以模糊化间隙&#xff0c;造成图像的噪点被抹平。 2、卷积核 在深度学习中&#xff0c;卷积核越大&#xff0c;看到的信息越多&#xff0…

Mac上的免费压缩软件-FastZip使用体验实测

FastZip是Mac上的一款免费的压缩软件&#xff0c;分享一下我在日常使用中的体验 压缩格式支持7Z、Zip&#xff0c;解压支持7Z、ZIP、RAR、TAR、GZIP、BZIP2、XZ、LZIP、ACE、ISO、CAB、PAX、JAR、AR、CPIO等所有常见格式的解压 体验使用下来能满足我所有的压缩与解压的需求&a…

网络自动化04:python实现ACL匹配信息(主机与主机信息)

目录 背景分析代码代码解读代码总体结构1. load_pattern_from_excel 函数2. match_and_append_pattern 函数3. main 函数总结 最终的效果&#xff1a; 今天不分享netmiko&#xff0c;今天分享一个用python提升工作效率的小案例&#xff1a;acl梳理时的信息匹配。 背景 最近同事…