网络编程——软件架构、osi七层、TCP/UDP协议

2023-11-18


一、网络编程是什么?

一个完整计算机系统(硬件、应用软件、操作系统)可以单机运作(玩单机游戏、编写文本等)当我们需要与别的计算机系统交互时,就需要用到互联网。
网络编程基于互联网编程,就是对信息的发送到接收,中间传输为物理线路的作用。
互联网:将计算机彼此链接到一起的介质
互联网作用:是进行数据交互
互联网本质:是基于网线去访问其他计算机上面的资源

二、软件架构

1.c/s架构

软件编写时只需要写client(客户端)、server(服务端)即可。用户端向服务端发送信息再由服务端调动,就使信息交互起来,计算机之间的互联就完成了。
该架构客户端可以高度定制,缺点是使用比较复杂
在这里插入图片描述

2.b/s架构

软件编写时需要写browser(浏览器)、server(服务器)即可。浏览器向服务器发送信息,达成信息交互。
该架构用户使用简便,缺点是网页端无法高度定制、体验不够完美

在这里插入图片描述

三、OSI七层

在这里插入图片描述

1.交换机
让接入交互机的多台计算机之间彼此互联
2.局域网
由交换机组成的网络称之为局域网(一个区域)
在局域网中可以直接基于mac地址实现数据交互
但是可能会产生广播风暴:交换机中同一时间出现太多广播操作
mac地址只能用于局域网交互数据 不能跨局域网传输
3.广播与单播
广播:在交换机中群发
单播:定向回复消息(记录mac地址)
4.路由器
将局域网彼此链接起来并支持数据交互
互联网其实可以看成是由多个局域网链接在一起

1.物理层

主要功能为定义了网络的物理结构,传输的电磁标准,Bit流的编码及网络的时间原则,如分时复用及分频复用。决定了网络连接类型(端到端或多端连接)及物理拓扑结构。说的通俗一些,这一层主要负责实际的信号传输。

2.链路层

在两个主机上建立数据链路连接,向物理层传输数据信号,并对信号进行处理使之无差错并合理的传输

此层使用了以太协议规定了数据传输方式
mac地址:该编号是由12位16进制数组成,前六位是产商编号,后六位是流水线号

3.网络层

主要负责路由,选择合适的路径,进行阻塞控制等功能。
IP协议:

规定了每台接入互联网的计算机都必须有一个IP地址
IPV4:点分十进制
最小:0.0.0.0
最大:255.255.255.255
IPV6:十六进制
IP地址分为公网IP和私网IP
公网IP是可以直接被浏览器访问到的 但是私网IP是不可以的
我们所有人的电脑默认使用的都是私网IP

4.传输层

最关键的一层,向用户提供可靠的端到端(End-to-End)服务,它屏蔽了下层的数据通信细节,让用户及应用程序不需要考虑实际的通信方法。

PORT协议(端口协议)

用于标识一台计算机上面正在运行的应用程序(端口号类似于手牌号)
端口号的范围是:0~65535
  0~1024:系统经常使用的端口号
  1024~8000:常用软件端口号
  1. 同一时间同一台计算机上面端口号不能冲突
  2. 端口号是动态分配的

IP地址:用于标识全世界独一无二的一台接入互联网的计算机
PORT号:用于标识一台计算机上面的某一个应用程序

IP+PORT:能够标识全世界独一无二的一台计算机上面的某一个应用程序

我们日常生活使用浏览器访问的各个网址其实就是IP+PORT
www.baidu.com 好记
14.215.177.29:80 难记
ip:port
很多常见的服务端都不需要指定端口 只要访问了ip地址内部去会自动映射

域名解析
将好记的地址解析成真正的地址
www.baidu.com 解析 202.108.22.5:80

5.应用层

保持应用程序之间建立连接所需要的数据记录,为用户服务。 三大协议NetBEUI和 IPX/SPX TCP/IP

四、TCP/UDP协议

1.TCP

TCP连接是全双工的,即双方的数据读写可以通过一个连接进行。完成数据交换之后,通信双方都必须断开连接以释放系统资源。

TCP协议的这种连接是一对一的,所以基于广播和多播(目标是多个主机地址)的应用程序不能使用TCP服务。而无连接协议UDP则非常适合于广播和多播。

  • TCP协议报头
    在这里插入图片描述
  • 源端口号/目的端口号: 表示数据从哪个进程来, 到哪个进程去.
  • 32位序号:
  • 4位首部长度: 表示该tcp报头有多少个4字节(32个bit)
  • 6位保留: 顾名思义, 先保留着, 以防万一
  • 6位标志位

连接管理机制

正常情况下, tcp需要经过三次握手建立连接, 四次挥手断开连接.

三次握手

第一次:

客户端 = > 服务器 此时服务器知道了客户端要建立连接了

第二次:

客户端 < = 服务器 此时客户端知道服务器收到连接请求了

第三次:

客户端 = > 服务器 此时服务器知道客户端收到了自己的回应

到这里, 就可以认为客户端与服务器已经建立了连接.

在这里插入图片描述

四次挥手
第一次:

客户端 = > 服务器
客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接。

第二次:

客户端 < = 服务器
服务器端返回一个确认报文段,此时客户端到服务器该方向的连接就释放了,此时整个TCP连接处于“半关闭状态”。

第三次:

客户端 < = 服务器
服务器端发送完数据,就发出连接释放的报文段,主动关闭TCP连接。

第四次

客户端 = > 服务器
客户端返回一个确认报文段,等到时间等待计时器设置的2MSL(最长报文段寿命)后,连接彻底释放。

在这里插入图片描述

2.UDP协议

UDP 只在 IP 的数据报服务之上增加了很少一点的功能。ip数据报服务每个IP数据报包含两部分,一个头和一个正文,正文部分也称之为有效净荷,不建立连接。

  • UDP协议报头
    在这里插入图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络编程——软件架构、osi七层、TCP/UDP协议 的相关文章

  • 在Centos7中搭建http服务器

    一 简介 二 安装 二 编辑配置文件 三 配置主页文件 或者将做好的网站放入根目录 四 配置安全访问规则 五 启动http服务 六 访问测试 七 心得体会 一 简介 Centos7默认的http服务器为Apache Apache HTTP
  • Python提取网页信息并保存

    使用Python爬取网页内容时 获取网页源码文件后使用一系列解析方法提取我们需要的信息 对于提取到的信息怎么保存下来 本文提供常见的两种方法 保存到本地文件或MySQL数据库 保存到本地csv文件 将数据以一定的格式保存到本地csv文件需要
  • 修改cdh6.3.2集群内部弱口令步骤

    在这里插入图片描述 cdh管理页面修改 hive hue oozie 密码 主节点修改 另外修订mysql数据库内密码 首先登陆mysql 具体参考 https blog csdn net weixin 43214644 article d
  • STM32---外部中断

    目录 1 外部中断描述 2 外部中断框图 总结 经过分析框图 可以产生软件中断和事件中断 软件中断的目的是进中断服务函数 事件中断是产生一个脉冲信号给片内外设 属于硬件级别的 3 各寄存器作用 4 端口对应 5 编程思路 EXIT NVIC
  • mysql8.0出现group by报错

    数据库跟目录执行set GLOBAL sql mode STRICT TRANS TABLES NO ZERO IN DATE NO ZERO DATE ERROR FOR DIVISION BY ZERO NO ENGINE SUBSTI
  • Qt 使用笔记 --转自 wangwenx190/Note

    转自 https github com wangwenx190 notes blob master qt zh cn md Qt 使用笔记 Qt 6 目标平台变更 Qt6 不再支持32位Windows系统 不再支持Windows 7 Win
  • pageHelper.startPage(m,n)的用法

    pageHelper startPage m n 的用法 pageHelper startPage m n 是分页查询 PageHelper startPage m n 两个参数 第一个参数是页数 第二个参数是条数 每页查询的条数 例如我想

随机推荐

  • 疯壳AI开源无人机SPI(六轴传感器数据获取)

    一 ICM20602简介 六轴传感器在当今智能穿戴和定位导航产品中被广泛应用 而六轴传感器中做的最好的要属InvenSense公司的产品了 ICM20602便是其推出的优秀六轴传感器之一 ICM20602集成3轴加速度计和3轴陀螺仪 其中陀
  • bat命令备份oracle数据库,并且删除7天之前的数据文件

    用批处理命令备份oracle数据库 我是用在windows server 2008 服务器上 并且创建了定时任务 让他7天执行一次 下面贴出代码 echo off echo echo Windows环境下Oracle数据库的自动备份脚本 e
  • Fast DDS入门五、在Windows平台创建一个简单的Fast DDS示例程序

    1 创建简单示例程序 在这里 先建立一个IDL文件 然后通过使用Fast DDS Gen生成程序生成这个简单示例程序 Fast DDS Gen程序的编译安装请参考 Fast DDS入门二 Fast DDS在Windows平台的编译安装 Fa
  • 狂热的NFT,泡沫还是风口?

    比特币市场狂热的NFT今年以来 不仅 元宇宙 爆火 NFT Non Fungible Token 非同质化代币 也掀起一波波炒作热潮 3月份 数字艺术家Beeple的NFT作品 每一天 前5000天 在佳士得拍卖行以6934万美元成交 创造
  • 解决查询时报的cannot be cast to com.credithc.enjoy.manager.OrderResp错误

    报的错误如下所示 14 30 54 637 ERROR http nio 8094 exec 4 127 0 0 1 f6c45349d812457bbb5e42bc3a1bc09d 1 0 com credithc enjoy manag
  • 【Python函数的递归】

    递归的定义 函数作为一种代码封装 可以被其他程序调用 当然 也可以被函数内部代码调用 这种函数定义中调用函数自身的方式称为递归 就像一个人站在装满镜子的房间中 看到的影像就是递归的结果 递归在数学和计算机应用上非常强大 能够非常简洁的解决重
  • 可视化的数据结构和算法

    转载自 http sd csdn net a 20110506 297285 html 导读 作者陈皓之前写过关于可视化排序的一篇文章 现在他又给大家罗列出可视化的数据结构和算法来供大家学习参考 文中分别从基础 索引 排序 动态编程等方面进
  • 微软句向量工具包Sent2vec

    工具介绍 What is sent2vec sent2vec maps a pair of short text strings e g sentences or query answer pairs to a pair of featur
  • 关于 OneNote 无法正常同步 问题

    问题 无法正常同步 备注 问题开始之前请刷新一下DNS缓存 https blog csdn net ljason1993 article details 83040313 看一下 无法正常同步 意思是卡同步条 一直显示同步条问题 就这个绿条
  • 如何找Ubuntu的历史版本的iso镜像文件

    目录 1 中文网站上的查找 2 英文网站上的查找 1 中文网站上的查找 中文网站为 企业开源和Linux UbuntuUbuntu是适用于企业服务器 桌面电脑 云 IoT物联网的现代化开源Linux操作系统 Ubuntu官网 https c
  • 计算机网络安全论文选题提纲,计算机网络安全毕业论文提纲

    计算机网络安全毕业论文提纲 想要写好一篇论文 首先需要一份提纲 理清思路 才能帮助你顺利的写好论文 那么 计算机网络安全毕业论文提纲又应该怎样写呢 下面是小编为大家整理的计算机网络安全毕业论文提纲 欢迎参考 题目 主标题 数据结构课程建设
  • 【软件工程】详细设计说明书

    详细设计说明书 1引言 1 1编写目的 说明编写这份详细设计说明书的目的 指出预期的读者 该文档实在概要设计的基础上 进一步的细化系统结构 展示了软件啊结构的图标 物理设计 数据结构设计 及算法设计 详细的介绍了系统各个模块是如何实现的 包
  • 【Go语言核心手册11】context.Context

    往期精选 欢迎转发 如何看待程序员35岁职业危机 Java全套学习资料 14W字 耗时半年整理 我肝了三个月 为你写出了GO核心手册 消息队列 从选型到原理 一文带你全部掌握 肝了一个月的ETCD 从Raft原理到实践 更多 11 1 内容
  • 仓储系统货位优化毕业论文【Flexsim仿真】

    一 内容简介 由堆垛机 货架 输送系统 管理系统 控制系统等组成的传统堆垛式仓储系统因为其成熟的技术和推广方式 高效等特点广泛的应用在物流 车间 制造等行业 但是堆垛机仓库每个巷道都会拥有一台堆垛机 其作业方式受到限制 鲁棒性比较差 一个巷
  • iOS 展示 gif

    gif 图 是多张依次有连续动作的图 顺时间展示的一种动态效果图 有的是均匀时间更换下一张 有的 则不是均匀时间变化 1 那么 对于均匀 时间变化的gif图 比较适合 使用 iOS 系统自带方法 imageView 的动态展示图片的方法就好
  • 30分钟掌握STL系列(三)

    30分钟掌握STL系列 三 使用迭代器编程 下面就讲一讲几种类型迭代器的编程 输入迭代器 输入迭代器是最普通的类型 输入迭代器至少能够使用 和 等 使用 来访问数据 使用 操作来递进迭代器到下一个元素或到达past the end值 为了理
  • 借助Linux中断机制的按键开关功能实现

    AlienTek的IMX6ULL开发板自带了一个按键和一个LED灯 这两个外设分别接在两个不同的GPIO端口 各自独立 我们想把按键作为灯的开关 通过按压按键来控制灯的亮灭 即灯亮时按一下则灯灭 灯灭时按一下则灯亮 这里的 按一下 是指按键
  • Vmware下Ubuntu18.04虚拟机右上角的网络图标消失连不上网络,找回方法。

    一 重新找回图标 先执行以下三段代码 在终端 Terminal 下输入 sudo service network manager stop sudo rm var lib NetworkManager NetworkManager stat
  • pandas选取数据方法

    pandas选取数据 首先创建一个3行3列的DataFrame data pd DataFrame 1 2 3 4 5 6 7 8 9 index a b c columns d e f 数据展示如下 1 按列选取数据 按照列名选取 返回一
  • 网络编程——软件架构、osi七层、TCP/UDP协议

    文章目录 一 网络编程是什么 二 软件架构 1 c s架构 2 b s架构 三 OSI七层 1 物理层 2 链路层 3 网络层 4 传输层 5 应用层 四 TCP UDP协议 1 TCP 2 UDP协议 一 网络编程是什么 一个完整计算机系