【网络基础知识】网络通信概述与TCPIP、UDP协议

网络基础知识

介绍网络基础知识,譬如网络通信概述、OSI 七层模型、IP 地址、TCP/IP 协议族、TCP 和 UDP 协议等等,
旨在以引导入门、了解为主,其中并不会深入、详细地介绍这些内容;
Linux网络编程入门移步:【Linux网络编程入门】Day5_socket编程基础

网络基础知识

1.1 网络通信概述

1.2 网络互连模型:OSI七层模型
1.2.1 TCP/IP四层/五层模型
1.2.2 数据的封装与拆封

1.3 lP地址

1.3.1IP地址的编址方式
1.3.2 IP地址的分类
1.3.3 特殊的IP地址
1.3.4 如何判断2个IP地址是否在同一个网段内

1.4 TCP/IP协议

1.5 TCP协议

1.5.1 TCP协议的特性
1.5.2 TCP报文格式
1.5.3 建立TCP连接:三次握手
1.5.4 关闭TCP连接:四次挥手
1.5.5 TCP状态说明
1.5.6 UDP协议

1.6 端口号的概念

1.1 网络通信概述

网络通信本质上是一种进程间通信,是位于网络中不同主机上的进程之间的通信,属于 IPC 的一种,通常称为 socket IPC。可以分为三个层次,如下所示:

(1)、硬件层:网卡设备,收发网络数据

(2)、驱动层:网卡驱动(Linux 内核网卡驱动代码)

(3)、应用层:上层应用程序(调用 socket 接口或更高级别接口实现网络相关应用程序)

在这里插入图片描述
在这里插入图片描述

1.2 网络互连模型:OSI七层模型

在这里插入图片描述
在这里插入图片描述

1.2.1 TCP/IP四层/五层模型

事实上,TCP/IP 模型是 OSI 模型的简化版本,OSI 七层模型和 TCP/IP 五层模型之间的对应的关系:
在这里插入图片描述

还有 TCP/IP 四层模型,与五层模型唯一不同的就是将数据链路层和物理层合并为网络接口层

在这里插入图片描述

1.2.2 数据的封装与拆封

在这里插入图片描述

数据的封装与拆封:网络通信中,数据从上层到下层交付时,要进行封装;同理,当目标主机接收到数据时,数据由下层传递给上层时需要进行拆封。

在这里插入图片描述

1.3 IP 地址

Internet 依靠 TCP/IP 协议,在全球范围内实现不同硬件结构、不同操作系统、不同网络系统的主机之间的互联。

在 Internet 上,每一个节点都依靠唯一的 IP 地址相互区分和相互联系,IP 地址用于标识互联网中的每台主机的身份,设计人员为每个接入网络中的主机都分配一个 IP 地址(Internet Protocol Address),只有合法的 IP 地址才能接入互联网中并且与其他主机进行网络通信,IP 地址是软件地址,不是硬件地址,硬件 MAC 地址是存储在网卡中的,应用于局域网中寻找目标主机。

1.3.1IP地址的编址方式

IP 地址中的 32 位实际上包含 2 部分,分别为网络地址和主机地址,可通过子网掩码来确定网络地址和主机地址分别占用多少位

IPv4 地址:		 一个 32 位二进制数的地址,由 4 个 8 位字段组成;
IPv6 地址:		 采用 128 位地址长度,由8 个 16 位字段组成网络通信数据包中:	IP 地址以 32 位二进制的形式表示;
人机交互中:		  通常使用点分十进制方式表示,譬如 192.168.1.1,这就是点分十进制的表示方式

1.3.2 IP地址的分类

根据 IP 地址中网络地址和主机地址两部分分别占多少位的不同,将 IP 地址划分为 5 类,分别为 A、B、C、D、E 五类

在这里插入图片描述

在这里插入图片描述

1.3.3 特殊的IP地址

这些 IP 地址不能分配给任何一个网络的主机使用

直接广播地址
在这里插入图片描述
在这里插入图片描述

1.3.4 判2个IP地址是否在同一个网段内
2 个 IP 地址的**网络标识**相同,那么它们就处于同一网络。网络标识 = IP 地址 & 子网掩码譬如 192.168.1.50 和 192.168.1.100,这 2 个都是 C 类地址,对应的子网掩码为255.255.255.0
1.4 TCP/IP协议

TCP/IP 协议它其实是一个协议族,包含了众多的协议,譬如应用层协议 HTTP、FTP、MQTT…以及传输层协议 TCP、UDP 等这些都属于 TCP/IP 协议;

对于应用开发来说,可能使用更多的是应用层协议,譬如 HTTP、FTP、SMTP等。

在这里插入图片描述
在这里插入图片描述

1.5 TCP协议

TCP(Transmission Control Protocol,传输控制协议)是面向连接、可靠、基于 IP 的传输协议

① TCP 协议工作在传输层,对上服务 socket 接口,对下调用 IP 层;
② TCP 是面向连接的传输协议,通信前必须通过三次握手与客户端建立连接关系后才可通信;
③ TCP 协议提供可靠传输,不怕丢包、乱序。

TCP 协议如何保证可靠传输?

① TCP 协议采用发送应答机制,即发送端发送的每个 TCP 报文段都必须得到接收方的应答,才能认为这个 TCP 报文段传输成功。
② TCP 协议采用超时重传机制,发送端在发送出一个 TCP 报文段之后启动定时器,如果在定时时间内未收到应答,它将重新发送该报文段。
③ 由于 TCP 报文段最终是以 IP 数据报发送的,而 IP 数据报到达接收端可能乱序、重复、所以 TCP协议还会将接收到的 TCP 报文段重排、整理、再交付给应用层。
1.5.1 TCP协议的特性

在这里插入图片描述

1.5.2 TCP报文格式

TCP 报文(或 TCP 报文段):当数据由上层发送到传输层时,数据会被封装为 TCP 数据段

TCP 报文 = TCP 首部+数据区域

一般 TCP 首部通常为 20 个字节大小:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.5.3 建立TCP连接:三次握手

在这里插入图片描述

TCP连接步骤

首先建立连接的过程是由客户端发起,而服务器会时刻监听、等待着客户端的连接;

在这里插入图片描述

为什么需要三次握手?

确认接收端和服务的都有收发信息的能力,如果不进行确认,那么发送信息,对方不一定能收到所以,TCP 的三次握手是通过三个包的收发保证传输的安全、可靠。

举例:1> 塔台塔台,我是8683;		  (发送能力)  2> 塔台收到,8683收到请回答;  (收发能力)3> 8683收到.....			  (接收能力)进行通信......
1.5.4 关闭TCP连接:四次挥手

客户端和服务端总共发送 4 个包以确认连接的断开:

当一方完成数据发送任务后,发送一个 FIN 来终止这一方向的连接,收到一个 FIN 只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个 TCP 连接上仍然能够发送数据,直到这一方向也发送了 FIN。
首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。

在 socket 编程中,这一过程由客户端或服务端任一方执行 close 来触发;

在这里插入图片描述

TCP 关闭连接步骤

在这里插入图片描述
在这里插入图片描述

1.5.5 TCP状态说明

在这里插入图片描述

1.5.6 UDP协议

UDP 是 User Datagram Protocol 的简称,中文名是用户数据报协议,是一种无连接、不可靠的协议,同样它也是工作在传输层。

	它只是简单地实现从一端主机到另一端主机的数据传输功能,这些数据通过 IP 层发送,在网络中传输,到达目标主机的顺序是无法预知的,因此需要应用程序对这些数据进行排序处理,UDP 协议更没有流量控制、拥塞控制等功能在发送端:UDP 只是把上层应用的数据封装到 UDP 报文中,在差错检测方面,仅仅是对数据进行了简单的校验,然后将其封装到 IP 数据报中发送出去。
在接收端:无论是否收到数据,它都不会产生一个应答发送给源主机,并且如果接收到数据发送校验错误,那么接收端就会丢弃该UDP 报文,也不会告诉源主机,这样子传输的数据是无法保障其准确性的,如果想要其准确性,那么就需要应用程序来保障了。
UDP 协议的特点
①、无连接、不可靠;
②、尽可能提供交付数据服务,出现差错直接丢弃,无反馈;
③、面向报文,发送方的 UDP 拿到上层数据直接添加个 UDP 首部,然后进行校验后就递交给 IP 层,而接收的一方在接收到 UDP 报文后简单进行校验,然后直接去除数据递交给上层应用;
④、速度快,因为 UDP 协议没有 TCP 协议的握手、确认、窗口、重传、拥塞控制等机制,UDP 是一个无状态的传输协议,所以它在传递数据时非常快,即使在网络拥塞的时候 UDP 也不会降低发送的数据。
1.6 端口号的概念

作用:主机接收到网络数据之后,通过端口号确定该数据是哪个进程对应的接收数据;

​ 通过“IP 地址+端口号”来区分主机不同的进程。

本质:一个数字编号,用来在主机中唯一标识一个能上网(能网络通信)的进程,取值范围0~65535。

一台主机通常只有一个 IP 地址,但是可能有多个端口号,每个端口号表示一个能上网的进程。一台拥有 IP 地址的主机可以提供许多服务,比如 Web 服务、FTP 服务、SMTP 服务等,这些服务都是能够进行网络通信的进程,IP 地址只能区分网络中不同的主机,并不能区分主机中的这些进程,显然不能只靠 IP 地址,因此才有了端口号。

在这里插入图片描述

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

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

相关文章

Mac上强大的菜单栏管理工具

想要Mac用的好,各种工具少不了,一款好用的软件对于提高使用效率和使用舒适度来说非常必要,iBar-强大的菜单栏图标管理工具 随着 Mac 运行的软件增加,状态栏中的图标也越来越多,不仅看得眼花缭乱,而且刘海屏…

小米电机与STM32——CAN通信

背景介绍:为了利用小米电机,搭建机械臂的关节,需要学习小米电机的使用方法。计划采用STM32驱动小米电机,实现指定运动,为此需要了解他们之间的通信方式,指令写入方法等。花了很多时间学习,但网络…

怎么把音频的速度调慢?6个方法调节音频速度

怎么把音频的速度调慢?调慢音频速度不仅可以帮助我们更好地捕捉细节,还能让我们在分析和学习时更加从容。这对于音乐爱好者来说,尤其有助于理解复杂的旋律和和声,使学习过程变得更加高效。而在语言学习中,放慢语速则能…

计算机网络第1章(概述)万字笔记详细版

1.1、计算机网络在信息时代的作用 计算机网络已由一种通信基础设施发展成为一种重要的信息服务基础设施计算机网络已经像水,电,煤气这些基础设施一样,成为我们生活中不可或缺的一部分 我国互联网发展状况 中国互联网络信息中心CNNIC 1.2、…

剪辑达人必备:四大抖音视频剪辑工具推荐!

在抖音这个短视频平台上,一个好的剪辑可以让视频内容更加生动有趣,吸引更多的观众。今天,我们就来探讨一下如何利用几款强大的剪辑工具,让你的抖音视频脱颖而出。 福昕视频剪辑:专业与易用并存 直达链接:…

RabbitMQ 入门(二)基本结构和消息模型

一、RabbitMQ的基本结构、角色和消息模型 MQ的基本结构: RabbitMQ中的一些角色: - publisher:生产者 - consumer:消费者 - exchange个:交换机,负责消息路由 - queue:队列,存储消息…

Linux下Docker方式Jenkins安装和配置

一、下载&安装 Jenkins官方Docker仓库地址:https://hub.docker.com/r/jenkins/jenkins 从官网上可以看到,当前最新的稳定版本是 jenkins/jenkins:lts-jdk17。建议下在新的,后面依赖下不来 所以,我们这里,执行doc…

前端开发攻略---前端ocr图片文字提取功能

1、引入资源 通过链接引用 <script src"https://cdn.bootcdn.net/ajax/libs/tesseract.js/5.1.0/tesseract.min.js"></script> npm或其他方式下载 npm i tesseract 2、示例 <!DOCTYPE html> <html lang"en"><head><meta…

【漏洞复现】SpringBlade menu/list SQL注入漏洞

》》》产品描述《《《 致远互联智能协同是一个信息窗口与工作界面,进行所有信息的分类组合和聚合推送呈现。通过面向角色化、业务化、多终端的多维信息空间设计,为不同组织提供协同门户,打破组织内信息壁垒,构建统一协同沟通的平台。 》》》漏洞描述《《《 致远互联 FE协作办公…

Pytest中fixture的scope详解

pytest作为Python技术栈下最主流的测试框架&#xff0c;功能极为强大和灵活。其中Fixture夹具是它的核心。而且pytest中对Fixture的作用范围也做了不同区分&#xff0c;能为我们利用fixture带来很好地灵活性。 下面我们就来了解下这里不同scope的作用 fixture的scope定义 首…

【fisco学习记录2】多群组搭建

说明 文档参考&#xff1a; 多群组部署 — FISCO BCOS 2.0 v2.11.0 文档 (fisco-bcos-documentation.readthedocs.io) 多群组搭建之前&#xff0c;先暂停之前的单群组&#xff0c;并删除&#xff1a; cd fisco bash nodes/127.0.0.1/stop_all.sh rm -rf nodes/ 实现图&…

【NLP自然语言处理】探索注意力机制:解锁深度学习的语言理解新篇章

目录 &#x1f354; 注意力机制介绍 1.1 注意力概念 1.2 注意力计算规则 1.3 常见的注意力计算规则 &#x1f354; 什么是注意力机制 &#x1f354; 注意力机制的作用 &#x1f354; 注意力机制实现步骤 4.1 步骤 4.2 代码实现 &#x1f354; 小结 学习目标 &#x1…

美团测试面试真题学习

美团真题1–测试基础-业务场景说下你的测试用例设计 功能角度 方法论 边界值、等价类划分、错误推测法示例 输入已注册的用户名和正确的密码&#xff0c;验证是否登录成功;输入已注册的用户名和不正确的密码&#xff0c;验证是否登录失败输入未注册的用户名和任意密码&#xff…

Apache Flink Dashboard

1、Overview Apache Flink Web Dashboardhttp://110.40.130.231:8081/#/overview 这张图片显示的是Apache Flink的Web UI界面&#xff0c;其中包含了以下几个部分&#xff1a; Available Task Slots: 显示当前可用的任务槽位数量。任务槽位是指Flink集群中可用于运行任务的资…

STM32—BKP备份寄存器RTC实时时钟

1.BKP简介 BKP(Backup Registers)备份寄存器BKP可用于存储用户应用程序数据。当VDD&#xff08;2.0~3.6V&#xff09;电源被切断&#xff0c;他们仍然由VBAT(1.8~3.6V)维持供电。当系统在待机模式下被唤醒&#xff0c;或系统复位或电源复位时&#xff0c;他们也不会被复位TAMP…

第5篇:DDOS病毒----应急响应之Linux实战篇

现象描述 某服务器网络资源异常,感染该木马病毒的服务器会占用网络带宽&#xff0c;甚至影响网络业务正常应用。 系统分析 针对日志服务器病毒事件排查情况&#xff1a; 在开机启动项/etc/rc.d/rc.local发现可疑的sh.sh脚本&#xff0c;进一步跟踪sh.sh脚本,这是一个检测病毒…

2024 kali系统2024版本,可视化界面汉化教程(需要命令行更改),英文版切换为中文版,基于Debian创建的kali虚拟机

我的界面如下所示 1. 安装 locales sudo apt install locales 2. 生成中文语言环境 sudo locale-gen zh_CN.UTF-8 如果你希望安装繁体中文&#xff0c;可以加入&#xff1a; sudo locale-gen zh_TW.UTF-8 3. 修改 /etc/default/locale 文件 确保有以下内容 LANGzh_CN.UT…

基于SpringBoot民宿预订系统小程序【附源码】

效果如下&#xff1a; 管理员登录界面 管理员功能界面 用户管理界面 房东管理界面 小程序首页界面 民宿房间界面 功能界面 研究背景 随着旅游业的蓬勃发展和人们对旅行体验的不断追求&#xff0c;民宿作为一种独特的住宿方式&#xff0c;因其个性化、温馨及富含地方特色的服务…

【自动驾驶汽车通讯协议】I2C(IIC)总线通讯技术详解

文章目录 0. 前言1. I2C简介2.I2C的工作原理2.1 硬件要求&#xff1a;2.2 半双工通信&#xff1a; 3. 通信时序4. 其他特性4.1 通信速率4.2 抗干扰措施4.3 注意事项 5. 在自动驾驶汽车中的应用5.1 I2C操作模式5.2 I2C的用途 6. 总结 0. 前言 按照国际惯例&#xff0c;首先声明&…

24.3 基于文件的服务发现模式

本节重点介绍 : 基于文件的服务发现提供了一种配置静态目标的更通用的方法可以摆脱对特定服务发现源的依赖通常的做法是调用内部CMDB的接口获取target数据&#xff0c;打上标签&#xff0c;生成json文件发给prometheus采集 基于文件的服务发现模式 解决的问题 之前手动配置…