【Linux-网络编程】

Linux-网络编程

  • ■ 网络结构
    • ■ C/S结构
    • ■ B/S结构
  • ■ 网络模型
    • ■ OSI七层模型
    • ■ TCP/IP四层模型
  • ■ TCP
    • ■ TCP通信流程
    • ■ TCP三次握手
    • ■ TCP四次挥手
  • ■ 套接字:socket = 主机IP + 主机上的进程(端口号)
  • ■ TCP传输文件

■ 网络结构

■ C/S结构

客户机-服务器(client-server)结构。服务器完成对数据的管理,客户机完成与用户的交互任
务。

■ B/S结构

B/S结构(浏览器、服务器模式)是web兴起后的一种网络结构模式,

■ 网络模型

■ OSI七层模型

在这里插入图片描述

属性描述
应用层:网络服务与最终用户的一个接口。这一层为用户的应用程序(例如电子邮件、文件传输和 终端仿真) 提供网络服务。
表示层:即带来格式化的表达和变换数据服务。数据的压缩和解压缩,加密和解密等工作都由表示层承担。
会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求。
传输层:定义了一些传输数据的协议和端口号。
主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这 一层数据叫做段。
传输层负责端到端的传输(源主机和目的主机)。
传输层可选择TCP或UDP协议
网络层:路由器 路由器需要将进来的数据包拆掉网络层和数据链路层两层首部并重新封装.
IP协议不保证传输的可能性,数据包在传输过程中可能丢失,可靠性在上层协议或应用程序中提供支持。
数据链路层:交换机
物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。这一层的数据叫做比特。

■ TCP/IP四层模型

在这里插入图片描述

在这里插入图片描述

如果两台计算机在不同的网段中。那么数据从一台计算机到另一台计算机传输中要经过一个或多个路由器。
在这里插入图片描述

■ TCP

■ TCP通信流程

在这里插入图片描述

■ TCP三次握手

在这里插入图片描述
第一次握手:
    1.客户端将SYN标志位置为1
    2.生成一个随机的32位的序号seq=J ,这个序号后边是可以携带数据(数据的大小)
第二次握手:
    1.服务器端接收客户端的连接:ACK=1
    2.服务器会回发一个确认序号: ack=客户端的序号+数据长度(上图中假设传输数据为0,仅SYN占据了一个字节)+SYN/FIN(按一个字节算)
    3.服务器端会向客户端发起连接请求: SYN=1
    4.服务器会生成一个随机序号:seq =K
第三次握手:
    1.客户单应答服务器的连接请求:ACK=1
    2.客户端回复收到了服务器端的数据:ack=服务端的序号+数据长度+SYN/FIN(按一个字节算)

seq为序号,ack为确认序号。仅当SYN=1的时候,序号seq才有用。同理,仅当ACK=1的时候,确认序号ack才有用。

为什么是3次握手呢?
通过3次握手才能够确定客户端的发送数据、数据数据的功能正常。服务器端的接收数据和发送数据正常。2次握手显然无法证明,比如客户端端发送SYN连接请求,服务器端回应ACK报文并发送,那么只能证明客户端发送数据正常,接收数据的能力不能确定。4次握手也可以达到,但是3次就能搞定,多花费一次没有必要。并且在三次握手的过程中,双方协商了一些信息,例如双方发送序号的初始值、最大段尺寸。

■ TCP四次挥手

在这里插入图片描述

  1. 客户端发送FIN位表示关闭连接的请求
  2. 服务器应答客户端的关闭连接请求
  3. 服务器处理完缓冲区中的数据后(做出了相应的应答),向客户端发送FIN表示关闭连接
  4. 客户端应答服务器的关闭连接请求

■ 套接字:socket = 主机IP + 主机上的进程(端口号)

标识网络中的唯一一个进程
socket实际上是一个文件描述符,只不过文本描述符走的是io,而socket走的是网络;

■ TCP传输文件

  1. 先发送文件名,和文件大小,在发送文件内容,当接收到大小和文件一样大小一样就知道文件发送完成。
  2. 接收端为新建文件,在将内容追加到文件中, 就算文件发送完成。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高亮页面任意元素,轻松完成用户引导 | 开源日报 No.201

kamranahmedse/driver.js Stars: 20.1k License: MIT driver.js 是一个轻量级、无依赖的纯 JavaScript 引擎,用于引导用户在页面上聚焦。该项目解决了如何在网页上引导用户关注核心要素的问题。 简单易用:没有任何外部依赖轻量级:仅有 5kb …

中间件 | RPC - [Dubbo]

INDEX 1 Dubbo 与 web 容器的关系2 注册发现流程3 服务配置3.1 注册方式 & 订阅方式3.2 服务导出3.3 配置参数 4 底层技术4.1 Dubbo 的 spi 机制4.2 Dubbo 的线程池4.3 Dubbo 的负载均衡策略4.3 Dubbo 的协议 1 Dubbo 与 web 容器的关系 dubbo 本质上是一个 RPC 框架&…

SpringCloud Stream 消息驱动

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅,从传统的模块之间调用,一步步的升级为 SpringCloud 模块之间的调用,此篇文章为第九篇,即介绍 Stream 消息驱动。 二、消息驱动概念 2.1 消息驱动是什么 官方定义 Spring …

学习通刷视频刷题脚本及安装使用过程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、安装插件二、复制脚本文件链接三、启动脚本四、登录学习通(切记一倍速就行不然被封哦)五、最好先把答题关掉先刷视频 前言 解决学习…

AI技术崛起:数据可视化之路更近

在当今AI技术蓬勃发展的时代,数据可视化作为信息传达的重要手段,其门槛逐渐降低。然而,这并不意味着我们可以忽视学习数据可视化的重要性。即使不需要深入专业技术,对数据可视化的基础知识的了解也是至关重要的。那么,…

02-Java变量和运算符

1. 基本数据类型转换(Conversion) 在Java程序中,不同的基本数据类型的值经常需要进行相互转换。Java语言所提供的七种数值类型之间可以相互转换,基本数据类型转换有两种转换方式:自动类型转换和强制类型转换。boolean…

Dubbo 的配置总线:抓住 URL,就理解了半个 Dubbo

概述 在互联网领域,每个信息资源都有统一的且在网上唯一的地址,该地址就叫 URL(Uniform Resource Locator,统一资源定位符),它是互联网的统一资源定位标志,也就是指网络地址。 URL 本质上就是…

【C++从练气到飞升】03---构造函数和析构函数

🎈个人主页:库库的里昂 ✨收录专栏:C从练气到飞升 🎉鸟欲高飞先振翅,人求上进先读书。 目录 ⛳️推荐 一、类的6个默认成员函数 二、构造函数 1. 构造函数的概念 2. 构造函数的定义 3. 构造函数的特性 三、析构函…

MySQL MHA故障切换

目录 一、案例分析 1.1、案例概述 1.2、案例前置知识点 1)什么是 MHA 2)MHA 的组成 3)MHA 的优势 4)MHA 现状 1.3、案例环境 1)本案例环境 ​编辑 2)案例需求 3)案例实现思路…

01——LenNet网络结构,图片识别

目录 1、model.py文件 (预训练的模型) 2、train.py文件(会产生训练好的.th文件) 3、predict.py文件(预测文件) 4、结果展示: 1、model.py文件 (预训练的模型) impor…

一道题学会如何使用哈希表

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1: 输入:nums [1,1,1], k 2 输出:2示例 2: 输入:nums [1,2,3], …

视频素材哪里有?这几个高清无水印素材库看看

关于短视频素材,我知道大家都在找那种能让人一看就心旷神怡的地方,尤其是我们自媒体人,更是离不开这些优质的短视频素材来吸引观众的眼球。别着急,今天我就给大家安利几个网站,保证让你找到满意的短视频素材。 1&…

黑马微服务p30踩坑

报错详情 : orderservice开不起来 : 发生报错 : 然后检查了以下端口啥的 ,配置啥的都是没有问题的 ; 解决办法 : 1 . 修改nacos1,2,3中的端口,将conf 中 cluster.conf中 的 127.0.0.1 全部改成自己本机的真实ipv4地址; 本机真实ipv4地址查看 :…

C#求水仙花数

目录 1.何谓水仙花数 2.求三位数的水仙花数 3.在遍历中使用Math.DivRem方法再求水仙花数 1.何谓水仙花数 水仙花数(Narcissistic number)是指一个 n 位正整数,它的每个位上的数字的 n 次幂之和等于它本身。例如,153 是一个 3 …

C++进阶:详解多态(多态、虚函数、抽象类以及虚函数原理详解)

C进阶:详解多态(多态、虚函数、抽象类以及虚函数原理详解) 结束了继承的介绍:C进阶:详细讲解继承 那紧接着的肯定就是多态啦 文章目录 1.多态的概念2.多态的定义和实现2.1多态的构成条件2.2虚函数2.2.1虚函数的概念2…

Ant Design Pro complete版本的下载及运行

前言 complete 版本提供了很多基础、美观的页面和组件,对于前端不太熟练的小白十分友好,可以直接套用或者修改提供的代码完成自己的页面开发,简直不要太爽。故记录一些下载的步骤。 环境 E:\code>npm -v 9.8.1E:\code>node -v v18.1…

RabbitMQ学习总结-延迟消息

1.死信交换机 一致不被消费的信息/过期的信息/被标记nack/reject的信息,这些消息都可以进入死信交换机,但是首先要配置的有私信交换机。私信交换机可以再RabbitMQ的客户端上选定配置-dead-letter-exchange。 2.延迟消息 像我们买车票,外卖…

Python | 机器学习中的模型验证曲线

模型验证是数据科学项目的重要组成部分,因为我们希望选择一个不仅在训练数据集上表现良好,而且在测试数据集上具有良好准确性的模型。模型验证帮助我们找到一个具有低方差的模型。 什么是验证曲线 验证曲线是一种重要的诊断工具,它显示了机…

基于Java+SpringMVC+vue+element宠物管理系统设计实现

基于JavaSpringMVCvueelement宠物管理系统设计实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末获取源…

计算机二级C语言的注意事项及相应真题-4-程序设计

目录 31.找出学生的最高分,由函数值返回32.计算并输出下列多项式的值33.将一个数字字符串转换成与其面值相同的长整型整数。可调用strlen函数求字符串的长度34.将字符串中的前导*号全部移到字符串的尾部。函数fun中给出的语句仅供参考35.将一组得分中,去…