网络编程基础

news2024/11/18 23:23:23

1 网络协议栈分层

协议栈是指网络中各层协议的总和,反映了一个网络中数据传输的过程,由上层协议到底层协议,使用分层实现提高灵活性以及简化实现。

OSI七层模型 和TCP/IP五层模型:

物理层:考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,尽可能地屏蔽掉不同传输媒体和通信手段的差异

数据链路层:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。

网络层:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径

传输层:提供可靠的端到端的差错和流量控制,保证报文的正确传输

应用层:解决某一类应用问题

2 网络中消息传输

2.1 主机间通过路由器等网络设备连接成整个网络拓扑图。

2.2 消息在主机间分层传递

2.3 各层消息包封装

3 TCP/IP协议部分介绍

3.1 以太网协议

3.2 IP协议

3.3 TCP协议

3.3.1 TCP三次握手、四次挥手

3.3.2 TCP慢启动、拥塞控制

3.3.3 TCP滑动窗口

3.3.4 TCP状态迁移图

3.4 ICMP、ARP

Internet Control Message Protocol 网络控制报文协议,网络层的重要协议,主要用来在网络设备间传递各种差错和控制信息。

Address Resolution Protocol 地址解析协议

4 socket网络编程

网路编程仅仅通过操作系统提供的socket API来完成网络通信,开发人员是感知不到数据如何寻址、如何在各层通信,但是掌握这些理论知识是很有必要的。

客户端:socket、connect、send、recv、close、shutdown

服务端:socket、bind、listen、accept、recv、send、close、shutdown

4.1 单客户端模型

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

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

相关文章

学长教你学C-day14-C语言文件操作

“我们的C语言学习也马上接近尾声了,今天我们来讲最后一个内容:C语言的文件夹操作。” “那么什么是文件呢?其实C语言里的文件是数据源的一种,最主要的作用是保存数据。例如txt、word、pdf等等都是不同的存储数据的形式。通过C语…

WebView与 JS 交互方式

一 前言 现在很多App里都内置了Web网页(Hybrid App),比如说很多电商平台,淘宝、京东、聚划算等等,如下图 上述功能是由Android的WebView实现的,其中涉及到Android客户端与Web网页交互的实现,今…

Vue路由使用的几个注意点

前言 在使用vue的路由的时候,是有几个需要注意的点,下面一一说明 组件的分类 组件分为两种:路由组件和一般组件 路由组件是注册到路由器中,并且是由路由相关标签代码进行展示 一般组件是注册到组件中,通过组件标签…

Linux常用命令——route命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) route 显示并设置Linux中静态路由表 补充说明 route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信,需要一台连接两个…

【软件架构思想系列】从伟人《矛盾论》中悟到的软件架构思想真谛:“对象”即事物,“函数”即运动变化...

引子 形而上学和辩证法两种宇宙观是截然相反的。“所谓形而上学的或庸俗进化论的宇宙观,就是用孤立的、静止的和片面的观点去看世界。这种宇宙观把世界一切事物,一切事物的形态和种类,都看成是永远彼此孤立和永远不变化的”,“和形而上学的宇宙观相反,唯物辩证法的宇宙观主…

元宇宙与数字孪生有区别

在元宇宙爆红之前,有一项技术已经慢慢渗透到各行各业之中,它可以逼真、实时地还原现实世界,它就是——数字孪生。目前很多人认为元宇宙与数字孪生的区别不大,元宇宙是数字孪生在技术层面的进阶与优化。其实不然,元宇宙…

IMX Linux 用户手册 --- 2

IMX Linux 用户手册 — 2 第5章 启用单独仿真 可以在i.MX 6DualLite SABRE-SD和i.MX 6DualLite SABRE-AI板上启用单独仿真。这是通过使用 引导加载程序构建过程中的特定U-Boot配置。 当在i.MX 6DualLite SABRE平台上启用此单独仿真时,i.MX 6DualLite的功能将更改为…

高通开发系列 - MSM8909指示灯操作

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 最近在做内核升级,但是内核串口log始终无法打印,也不清楚是不是内核跑飞了还是什么原因,先尝试点亮一个LED灯来判断下。 这里面我们…

docker start启动容器不报错,却无法正常启动

问题描述:想启动 1e 这个容器 start后,没有报错,但是就是启动不了… 原因 查看一下日志 docker logs 1e1b85322dfa好家伙,虽然它运行命令的时候不报错,但是它运行错误信息写到日志里面去了,查看最新的日记信息看…

回收租赁商城系统功能拆解14讲-分销设置

回收租赁系统适用于物品回收、物品租赁、二手买卖交易等三大场景。 可以快速帮助企业搭建类似闲鱼回收/爱回收/爱租机/人人租等回收租赁商城。 回收租赁系统支持智能评估回收价格,后台调整最终回收价,用户同意回收后系统即刻放款,用户微信零…

MySQL8.0版本怎样进行CentOS系统配置?

MySQL安装完成后,会自动配置为名称叫做:mysqld的服务,可以被systemctl所管理,我们在进行系统的配置时,主要修改root密码和允许root远程登录。 # 通过grep命令,在/var/log/mysqld.log文件中,过滤…

深度学习论文: Multi-modal Sensor Fusion for Auto Driving Perception: A Survey

深度学习论文: Multi-modal Sensor Fusion for Auto Driving Perception: A Survey Multi-modal Sensor Fusion for Auto Driving Perception: A Survey PDF: https://arxiv.org/pdf/2202.02703.pdf PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: h…

图论中的GLM模型

下面是我对GLM模型的理解: 数据编码的方式 在一般统计中,常用的coding方式有dummy,effect和cell.mean,这个在R和python中都可以实现。 dummy coding 举例 假设有4个组别A, B, C, D,它的自由度是4-13,因此…

自动驾驶专题介绍 ———— APA标准(ISO 16787)

文章目录介绍通用要求泊车控制最大运行速度退出条件建议空间车位水平空间车位垂直空间车位泊车流程流程定义Queiscent ModeSearch ModeSlot FoundMode SelectionAssisted Parking ModeEnd of Assisted Parking Mode人机交互策略车位搜索阶段车位搜索到且未激活泊车驾驶员请求泊…

【手写 Promise 源码】第七篇 - 实现 Promise 返回值 x 的处理

一,前言 上篇,实现了 Promise 的链式调用功能,主要涉及到以下几个点: 介绍了 Promise 的链式调用,返回普通值和抛出异常的共5种情况;分析了当前 Promise 源码的问题以及解决方案;Promise 链式…

亚马逊云科技:大模型的训练和应用门槛亟需降低

在过去的两周里,ChatGPT的热度居高不下,引发全网讨论。虽然AlphaGo这类AI产品也曾引起热议,但是在应用层面终究还是离用户太远了。而ChatGPT更像是「民用级」的产品,真正意义上让AI技术跨入广泛破圈应用时代。在当下,机…

如何准确测试75 Ohm系统的信号?

射频同轴线缆特征阻抗的选择,主要取决于功率容量、衰减强度、可加工性等因素,然而最大功率容量和最小衰减性能对应的特征阻抗是不同的。在射频领域通常采用50 Ohm特征阻抗的原因,就是综合考虑了以上因素。也就是说,50 Ohm特征阻抗…

Vue安装并使用路由和路由器实现页面跳转

前言 想要使用路由和路由器实,必须要知道什么是路由和路由器,可以参考这篇文章:Vue路由和路由器简介 下面通过编写代码演示一下如何使用路由和路由器实现页面跳转。 引入bootstrap.css 本案例所有相关的样式,都是引入的bootst…

基于 Toad 的评分卡模型全流程详解(内含 Python 源码)

不知不觉中,Python 已经在短短几年内一跃成为最热门的编程语言之一,尤其是在数据科学、人工智能和机器学习领域。这除了因为Python相对简单易学,可读性高之外,也有很大一部分原因是因为Python有着良好的开源生态从而产生了许多强大…

Golang如何优雅接入多个远程配置中心?

本文基于viper实现了apollo多实例快速接入,授人以渔,带着大家读源码,详解实现思路,封装成自己的工具类并且开源。 前言 viper是适用于go应用程序的配置解决方案,这款配置管理神器,支持多种类型、开箱即用、…