网络编程之Socket通信原理,TCP 、UDP、IPv4 IPv6地址,网络原理基础

2023-05-16

相关博客网址:https://www.cnblogs.com/wangcq/p/3520400.html
本帖内容来源于网络,如有侵权请联系删除。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
加粗样式

什么是TCP/IP、UDP?

TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从字面意思来看TCP/IP是TCP和IP协议的合称,但实际上TCP/IP协议是指因特网整个TCP/IP协议族。不同于ISO模型的七个分层,TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Socket在哪里呢?

在这里插入图片描述

Socket是什么呢?

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
我们知道两个进程如果需要进行通讯最基本的一个前提能能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。
能够唯一标示网络中的进程后,它们就可以利用socket进行通信了,什么是socket呢?我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。

交互

先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。

在这里插入图片描述

TCP

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

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

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

其他基础知识

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络编程之Socket通信原理,TCP 、UDP、IPv4 IPv6地址,网络原理基础 的相关文章

  • 设计搭建汽车机器人(M1)

    p 文末提供原文PDF免费下载 期刊论文版式 摘要 xff1a 汽车机器人是移动机器人类型中非常典型的一种 xff0c 本文从应用需求 场景等角度分析 xff0c 详细阐述汽车机器人MCR的本体设计 硬件系统设计及软件系统设计情况 xff0
  • STM32F103mini教程学习总结与心得(一)

    关注同名微信公众号 混沌无形 xff0c 阅读更多有趣好文 xff01 1 引脚是否兼容5V的判断 xff1a 引脚表中PF表示5V xff0c 原理图中有ADC的引脚为3 3V 2 PT xff1a 容忍5V xff0c 没有PT标示 x
  • STM32F103mini教程学习总结与心得(二)---->串口通信

    关注同名微信公众号 混沌无形 xff0c 阅读更多有趣好文 xff01 一 串口原理 1 处理器与外部设备通信的两种方式 xff1a 并行通信 xff08 速度快 xff0c 占用资源多 xff09 43 串行通信 xff08 反之 xff
  • 电源管理与驱动设计笔记

    关注同名微信公众号 混沌无形 xff0c 阅读更多有趣好文 xff01 1 电源管理的功能 xff1a 具备电压过高保护 电流过大保护 电量监测 过放保护 等功能 gt 自主充电 2 一款清洁机器人的运动控制系统方案设计示意图 2 1电源充
  • (4)(4.3) 将固件加载到已有ArduPilot固件的主板上

    文章目录 前言 1 将自动驾驶仪连接到电脑 2 选择COM端口 3 安装固件 4 使用测试版和开发版 4 1 测试版 4 2 最新开发版本 4 3 自定义固件构建服务器 5 测试 前言 这些说明将告诉你如何将最新的固件下载到已经安装了 Ar
  • 【MDK KEIL】keil添加文件夹目录结构(批量添加.c和.h文件到工程中)(keil添加头文件路径)

    第一步打开创建文件夹选项 xff1a 第二步 xff1a 直接创建删除 或者上移下移 就好了 3 添加文件夹的同时别忘记导入头文件 xff1a
  • 单片机IO详解(上拉 下拉 准双向 输入 输出 推挽 开漏)

    目录 上拉 xff1a 下拉 输入 xff1a 上拉输入 下拉输入 输入浮空 模拟 施密特输入 xff1a 三态输入 xff1a 输出 复用推挽和推挽输出区别 推挽输出特点 开漏输出 xff1a 准双向口 一般单片机都会提供上拉和下拉功能
  • 局部路径规划算法——实现DWA(dynamic window approach)控制空间采样

    DWA算法是局部路径规划算法 xff0c 在全局路径规划算法完成后 xff0c DWA算法能够根据当前小车 xff08 机器人 xff09 位置 障碍物 终点的位置进行控制空间 xff08 速度 角速度 xff09 的采用 xff0c 从而
  • make和cmake简要介绍

    GCC GCC xff08 GNU Compiler Collection xff0c GNU编译器套件 xff09 是由GNU开发的编程语言译器 GNU编译器套件包括C C 43 43 Objective C Fortran Java A
  • 什么是小端模式,什么是大端模式

    字节序 前言 内存在读写数据的时候 xff0c 都是以字节为单位进行读写的 xff0c 其最小的读写单位也是字节 一个字节占8位 xff0c 如果暂且只考虑无符号数 xff0c 那么其能表示的范围只有0 255这256个整数数值 如果将一个
  • 多旋翼飞行器螺旋桨动力学模型

    1 多旋翼螺旋桨动力学模型 1 1 螺旋桨几何位置基本描述1 2 螺旋桨拉力及拉力力矩1 3 螺旋桨反扭力矩1 4 螺旋桨陀螺力矩1 5 螺旋桨动力学方程 1 多旋翼螺旋桨动力学模型 1 1 螺旋桨几何位置基本描述 坐标系分为多旋翼机体重心
  • 雷达天线孔径与分辨率

    我们现在讲一下真实孔径的问题 xff0c 我们先有一个 最小分辨角 的概念 xff0c 根据瑞丽 xff08 Rayleigh xff09 判据 xff0c 几何光学 xff0c 物体上的一个发光点经透镜成像后得到的应是一个几何像点 而由于
  • 【新手】关于ros包安装时,提示找不到相应的ros包(unable to locate package ros- **** )

    我是在学习这个大佬的教程 xff1a 从零开始的ROS学习之仿真 43 SLAM https blog csdn net u011612364 article details 122147741 xff08 引用 xff09 时发现我自己出
  • c++实现守护进程

    概述 Linux Daemon xff08 守护进程 xff09 是运行在后台的一种特殊进程 它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件 约束 守护进程一般在系统启动时开始运行 xff0c 除非强行终止 xff0c 否
  • linux C++ 环境下的ActiveMQ学习

    ActiveMQ 1 概述 ActiveMQ 是Apache出品 xff0c 最流行的 功能强大的即时通讯和集成模式的开源服务器 ActiveMQ 是一个完全支持JMS1 1和J2EE 1 4规范的 JMS Provider实现 提供客户端
  • Django与mysql建立长连接

    问题 xff1a 每次请求操作mysql数据库都会从新创建一个connect实例 xff0c 大大降低了数据处理的效率 还是django不够熟悉 解决办法 xff1a 自Django1 6版本后 xff0c 官方提供支持长连接 xff0c
  • Python ActiveMQ 消费者实现

    encoding utf 8 import stomp import sys import thread Create your tests here topic name 61 39 topic your topic name 39 br
  • Django 服务启动2次问题

    首先 xff0c 我们的操作如下 xff1a 一 命令行的启动服务 xff1a python manage py runserver 0 0 0 0 8000 二 服务启动行为 try os environ setdefault 34 DJ
  • Django settings.py配置总结

    1 版本 xff1a 1 8 9 2 解决数据库时间和当前系统时间不一致问题 设置USE TZ 61 False 3 时区配置 xff1a TIME ZONE 61 39 Asia Shanghai 39 4 静态文件js css等的引用路
  • Extern关键字在vscode中不生效的解决办法

    今天回顾extern关键字的时候遇到一个问题 a c里的代码 b c里的代码 这么简单的几个代码 vscode竟然给我报错 为什么 抱着这个问题去逛了下csdn 终于让我找到了问题所在 原来vscode默认只能对单文件编译 即使俩文件在同一

随机推荐

  • 头文件、源文件 及extern的使用

    头文件与源文件的作用 1 编译器的工作过程 简单的说其实要理解C文件与头文件 xff08 即 h xff09 有什么不同之处 xff0c 首先需要弄明白编译器的工作过程 xff0c 一般说来编译器会做以下几个过程 xff1a 1 预处理阶段
  • 从零开始的三维激光雷达SLAM教程第二讲(搭建Gazebo仿真环境,并添加动态障碍物)

    文章目录 引言第二节 xff1a 搭建仿真环境下载velodyne激光模拟功能包安装turtlebot3模拟器安装三维激光雷达到turtlebot3上构建Gazebo地图添加动态障碍物操作机器人建图最终效果 引言 毕业设计打算做三维激光SL
  • 一个简单的基础通信协议的设计与实现

    一个简单的基础通信协议的设计与实现 一种常见的通信协议格式搭建串口收发环境配置STM32CubeMX添加USART部分代码 通信协议的实现 不同设备之间的通信 xff0c 都需要设计自己的通信协议 为了保证设备与设备之间的数据的稳定传输 x
  • 串口调试助手之间通信和接受、发送数据

    最近在用串口调试助手的时候在网上找了好多资料和教程都没有一个完整的 xff0c 就来写个完整的串口调试助手资料给刚入门或者刚接触的小白 xff0c 希望有所帮助 xff01 1 准备好串口调试助手 和 虚拟串口驱动 软件VirtualSer
  • win10下vs2019编译使用boost库v1_75_0

    boost介绍 Boost库是为C 43 43 语言标准库提供扩展的一些C 43 43 程序库的总称 boost是一个准标准库 xff0c 相当于STL的延续和扩充 xff0c 它的设计理念和STL比较接近 xff0c 都是利用泛型让复用达
  • vscode格式化C++代码方法

    参考 xff1a https blog csdn net wydxry article details 125191171 格式操作 解决方法 xff1a 按下组合键ctrl 43 shift 43 p 在弹出的搜索窗口中输入format
  • OpenCV基本介绍和安装

    OpenCV是一个通用 开源 功能强大的图像处理和计算机视觉库 官方网站 xff1a Home OpenCV 1999年 加里 布拉德斯基在Intel公司创建了计算机视觉库 xff08 Computer Vision Library xff
  • java jni ubuntu 环境搭建时遇到的坑

    1 xff1a 版本不一致遇到的坑 javah的版本需要同javac的版本一致 如果版本的问题搞不定 xff0c 直接用andorid source build之后的环境即可 2 xff1a javah使用遇到的坑 jni中字段描述符可以使
  • jni中native通过adb输出

    本文主要实践了如何在jni中打印log xff0c 贴源码 xff1a Android mk主要是巴拉的android源码中的app LOCAL PATH 61 call my dir include CLEAR VARS TARGET P
  • 关于服务器端用C语言实现TCP的数据接收

    关于这个 xff0c 真的是踩过很多坑 xff0c 罗列了一下要注意的点 xff1a 代码前面一定要添加库 xff0c 不然会出很多错 pragma comment lib 34 Ws2 32 lib 34 这段代码在vs2017中怎么也编
  • linux中断&poll&selcet按键处理机制

    在上一篇linux按键中断处理中 xff0c 我们采用按键中断处理获取按键 xff0c 在read函数中阻塞读取 xff0c 当按键发生时 xff0c read自动解除阻塞 xff0c 实现应用层读取到相应的按键值 在上一节中如果没有按键到
  • linux中断&poll&selcet按键处理机制

    在上一篇linux按键中断处理中 xff0c 我们采用按键中断处理获取按键 xff0c 在read函数中阻塞读取 xff0c 当按键发生时 xff0c read自动解除阻塞 xff0c 实现应用层读取到相应的按键值 在上一节中如果没有按键到
  • Java进阶day03继承

    先贴代码后分析 xff1a class Person span class hljs keyword private span span class hljs keyword int span age span class hljs key
  • JAVA进阶day05包和权限

    我这种外行人也听说过jar包 xff0c jar到底是个啥 xff1f 为啥c语言里没有呢 xff1f 下面我们拨开这一层面纱 贴代码做分析 xff1a 一 jar包 import a span class hljs preprocesso
  • Nandflash希尔特编程器烧录带来的一些点知识信息

    1 xff0e NAND FLASH 的特殊性 1 存在坏块 NAND FLASH 由于其生产工艺的原因 xff0c 出厂芯片中会随机包含坏块 坏块在出厂时已经被初始化 xff0c 并在特定区域中存在标记 xff0c 如果在使用过程中出现坏
  • 浅谈关于SRAM与DRAM的区别

    从名字上看 xff0c SRAM与DRAM的区别只在于一个是静态一个是动态 由于SRAM不需要刷新电路就能够保存数据 xff0c 所以具有静止存取数据的作用 而DRAM则需要不停地刷新电路 xff0c 否则内部的数据将会消失 而且不停刷新电
  • 在中断程序里修改全局变量的童鞋注意啦~(C中的volatile作用 转载~)

    一个定义为volatile的变量是说这变量可能会被意想不到地改变 xff0c 这样 xff0c 编译器就不会去假设这个变量的值了 精确地说就是 xff0c 优化器在用到这个变量时必须每次都小心地重新读取这个变量的值 xff0c 而不是使用保
  • arm MMU详解

    一 MMU的产生 许多年以前 xff0c 当人们还在使用DOS或是更古老的操作系统的时候 xff0c 计算机的内存还非常小 xff0c 一般都是以K为单位进行计算 xff0c 相应的 xff0c 当时的程序规模也不大 xff0c 所以内存容
  • 如何使用repo sync

    我們知道 repo 是 Google 為 Android source tree 的管理而寫的一個 script xff0c 以方便處理 Android 源碼包含的上百個 git repositories 要取得 upstream 最新的
  • 网络编程之Socket通信原理,TCP 、UDP、IPv4 IPv6地址,网络原理基础

    相关博客网址 xff1a https www cnblogs com wangcq p 3520400 html 本帖内容来源于网络 xff0c 如有侵权请联系删除 加粗样式 什么是TCP IP UDP xff1f TCP IP xff08