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

news2024/11/23 10:49:04

网络基础知识

介绍网络基础知识,譬如网络通信概述、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.coloradmin.cn/o/2210296.html

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

相关文章

使用CSS和HTML实现3D图片环绕效果

使用CSS和HTML实现3D图片环绕效果 在本篇博客中,将介绍如何使用HTML和CSS实现一个3D图片环绕效果。这个效果不仅具有视觉吸引力,而且具有高度的互动性,鼠标悬停时动画会暂停。接下来将一步步讲解这个效果的实现过程。 1. 效果 2. 页面结构与…

Python人脸识别技术进阶篇

在上一篇文章中,我们介绍了如何使用Python进行基本的人脸识别。本文将深入探讨人脸识别技术的高级应用,包括如何优化识别性能、处理复杂环境下的识别挑战以及如何利用深度学习模型来提高识别准确性等话题。 人脸识别的原理回顾 人脸识别流程 人脸识别…

使用 llamafile 以单个文件运行本地大模型

在开发 GenAI 应用时,有一个在本地运行的大模型是非常重要的,可以很方便地进行开发和测试。目前有几个流行的在本地运行大模型的选项,包括 Ollama 和 LM Studio。 这里介绍的是 llamafile。llamafile 是 Mozilla 支持的开源项目。llamafile …

OceanBase + DolphinScheduler,搭建分布式大数据调度平台的实践

本文整理自白鲸开源联合创始人,Apache DolphinScheduler PMC Chair,Apache Foundation Member 代立冬的演讲。主要介绍了DolphinScheduler及其架构、DolphinScheduler与OceanBase 的联合大数据方案。 DolphinScheduler是什么? Apache Dolphi…

第十六章 RabbitMQ延迟消息之延迟插件优化

目录 一、引言 二、优化方案 三、核心代码实现 3.1. 生产者代码 3.2. 消息处理器 3.3. 自定义多延迟消息封装类 3.4. 订单实体类 3.5. 消费者代码 四、运行效果 一、引言 上一章节我们提到,直接使用延迟插件,创建一个延迟指定时间的消息&…

一款零依赖、跨平台的流媒体协议处理工具,支持 RTSP、WebRTC、RTMP 等视频流协议的处理

大家好,今天给大家分享一款功能强大的流媒体协议处理工具go2rtc,支持多种协议和操作系统,具有零依赖、零配置、低延迟等特点。 项目介绍 go2rtc可以从各种来源获取流,包括 RTSP、WebRTC、HomeKit、FFmpeg、RTMP 等,并…

第一个servlet程序

文章目录 在原有工程上建立模块前端配置前后端映射关系添加外部依赖库后端代码启动配置 在原有工程上建立模块 添加web框架 前端 应用结构 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>第一…

【云原生技术】Docker容器进阶知识

文章目录 namespace概述一、namespace的基本概念二、namespace的主要作用三、namespace的类型四、namespace的操作五、namespace在容器技术中的应用 cgroup一、cgroup的基本概念二、cgroup的主要功能三、cgroup的子系统介绍四、cgroup的应用场景五、cgroup的使用与管理 cgroup和…

uniapp-小程序开发0-1笔记大全

uniapp官网&#xff1a; https://uniapp.dcloud.net.cn/tutorial/syntax-js.html uniapp插件市场&#xff1a; https://ext.dcloud.net.cn/ uviewui类库&#xff1a; https://www.uviewui.com/ 柱状、扇形、仪表盘库&#xff1a; https://www.ucharts.cn/v2/#/ CSS样式&…

余 弦 曲 线

1&#xff0e;问题描述 在屏幕上画出余弦函数cos&#xff08;x&#xff09;曲线&#xff0c;如图1.6所示。 图1.6 余弦函数cos&#xff08;x&#xff09;曲线 2&#xff0e;问题分析 连续的曲线是由点组成的,点与点之间距离比较近&#xff0c;看上去就是曲线了&#xff0c;…

uni-app 如何全局设置,获取app.vue里面的值

在globalData里设置一个值 通过下面方法修改 this.$options.globalData.$versonStatus status 在页面中通过getApp()获取 getApp().globalData.$versonStatus

<<迷雾>> 第11章 全自动加法计算机(3)--存储器示例 示例电路

info::操作说明 将一组比特单元扩展为多组的结果, 操作原理类似 注: 一次只能操作一组, 此处需进一步引入地址译码器才能具体进行操作, 见后面的例子, 此处仅展示结构原理 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/cyjsjdm…

C++模板初阶速成

温馨提示&#xff1a;本篇文章依旧是c速成系列的文章&#xff0c;但和以往有所不同的是&#xff0c;本篇文章带大家简单了解并能够学会使用模板 泛型编程 概念&#xff1a;编写与类型无关的通用代码&#xff0c;是代码复用的一种手段。 什么是复用&#xff1f; 简单来说就是…

分组相关 -- EoO原理

EoO (Ethernet over OTN) 是将以太网信号处理后&#xff0c;经过封装、映射后上OTN系统&#xff0c;通过WDM通道来传送的技术。传统的OTN承载ETH专线&#xff0c;不支持限速&汇聚等场景。引入EoO技术后&#xff0c;支持LAG、QoS、OAM等L2层的功能特性&#xff0c;实现端口限…

RBTree(红黑树)的介绍和实现

欢迎来到杀马特的主页&#xff1a;羑悻的小杀马特.-CSDN博客 目录 ​编辑 一红黑树介绍&#xff1a; 1.1红黑树概念&#xff1a; 1.2红黑树遵循的原则&#xff1a; 1.3红黑树效率分析&#xff1a; 二.红黑树的实现&#xff1a; 2.1红黑树结构&#xff1a; 2.2红黑树节点…

TMGM:下周全球市场分析

本周&#xff0c;美国股市表现强劲&#xff0c;标普500指数和道琼斯工业平均指数均刷新了历史最高记录。这一涨势得到了美联储公开市场委员会&#xff08;FOMC&#xff09;会议纪要的支撑&#xff0c;纪要显示大部分官员都支持9月份实施重大的50个基点降息。 在澳大利亚&#…

宝安网站建设中的响应式设计

宝安网站建设中的响应式设计 在数字化时代&#xff0c;网站已成为企业展示形象、吸引客户的重要平台。而在宝安地区&#xff0c;随着互联网的发展&#xff0c;越来越多的企业意识到响应式设计的重要性。响应式设计不仅能够提升用户体验&#xff0c;还能为企业带来更大的市场竞争…

.NET 一款通过DCOM实现系统提权的工具

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

2024年恩施职称评前公示

此次公示共有422人&#xff0c;初级职称、中级职称、馆员、畜牧师、助理馆员、三级演员、农艺师等均在一起进行评审前的公示。 根据恩施州职称改革工作领导小组办公室《关于报送2024年度恩施州中初级专业技术职务评审材料的通知》&#xff08;恩施州职改办〔2024〕14号&#xf…

04 什么是线性表

什么是线性表 一、为什么需要线性表 例如&#xff1a; ​ 在程序中保存指定班级的所有的学生信息&#xff08;暂时只需要处理姓名、年龄&#xff09;&#xff0c;该班级最多可容纳30人&#xff0c;且可进行数量上的增减。 业务功能&#xff1a; ​ 1&#xff09;这个项目中…