当前位置: 首页 > news >正文

网络的学习 2 Socket

进程是人在系统中的代表,只要把数据给进程,人就相当于拿到了数据

数据传输到主机不是目的,而是手段,到达主机内部,再交给主机内的进程才是目的

上网的行为

1. 从远端服务器,获取数据              ->

                                                          ->       --->   进程(内存) ->  网卡  -> 网络

2. 本地数据,上传到远端服务器       ->                之间都是IO关系,只能做收取信息和发送信息

通信的本质:就是两个不同的主机的进程在进行数据交换

网络通信,本质就是进程间通信!让不同的进程看到同一份资源!网络!


端口号

端口号,可以用来标识系统中唯一的一个网络进程

端口号             VS           pid:OS为每个运行中的进程分配的唯一整数标识

为什么有端口号还要有pid?

1. 每个进程都有pid但不是每个进程都有端口号

2.从技术角度,pid是可行的,但是,pid是一个系统概念,pid变化了。网络也跟着变,是解耦

一个进程可以有多个端口号,一个端口号只能被一个进程占用

源端口号和目的端口号

描述“数据是谁的,要发给谁”

socket

IP:全网内唯一的一个主机

port:该主机内唯一的一个网络进程

IP + Port = 全网内唯一的一个网络进程     

套接字 socket = ip + port

网络通信的本质:全网内唯二的两个进程,再进行进程间通信

{源ip,srcPort,目的ip,dstPort}标识互联网中唯二的两个进程

传输层的典型代表

TCP,UDP协议

                                      都是传输层协议

TCP协议是有连接的  eg:打电话           UDP协议 无连接  eg:对讲机

  面向字节流:像“水管输水” 连续可靠    面向数据报:像快递包裹,独立快速

  可靠传输                                                不可靠传输

而是否可靠要把它当成中性词,是特点,可靠即做更多工作,复杂占用的资源多,不可靠则很简单

大小端

TCP/IP协议规定,网络数据流应该采用大端字节序,即低地址高字节

凡是发送到网络中的数据,必须是大端

先发出的数据是低地址,后发出的是高地址

如果当前发送主机是小端就要先将数据转成大端

拿着客户端向服务器发送请求

套接字编程接口

api

socket  创建socket 文件描述符

bind      绑定端口号

listen     监听

accept   接收请求

connect  建立连接

sockaddr 结构

网络通信的本质其实是进程间通信

systemV -- 本地进程间通信

posix 标准 -- 网络通信,进程通信 也能进行本地通信

网络套接字:跨设备通信,依赖ip和端口号,适用于网络场景

本地套接字:本地进程通信,依赖文件路径,速度更快,更安全(无需经过网络协议栈)

socket 会有很多的种类,来满足不同的应用场景

socket未来的接口,会有不同的通信接口规范

socket的设计者只想提供一种通信接口

自行区分是网络通信还是本地通信

                                                                                             本质就是继承和多态

                                                                             实际上就是基类,用C语言形成的一套继承体系

8位填充清零就可以

           

IPv6 AF_INET6

http://www.lryc.cn/news/605066.html

相关文章:

  • 发那科机器人P点位置号码自动变更功能为禁用状态
  • python基础:用户输入和 while 循环
  • 【机器学习】pycharm使用SSH SFTP 远程连接 ubuntu服务器 进行开发+调试+数据训练
  • IBus vs. Fcitx5:一场 Linux 输入法框架的正面交锋
  • 在 Kubernetes 上部署 Label Studio
  • Apache Kafka核心组件详解
  • 当人生低谷无人帮助时,如何独自奏响人生乐章
  • 借助 Wisdom SSH AI 助手构建 Linux 容器化开发流水线
  • 虚实共生的智能革命:元宇宙、物联网与 AI 融合生态全景图谱
  • Vue 3 入门教程 2- Vue 组件基础与模板语法
  • 推客系统开发全流程解析:从概念到落地的完整指南
  • 论文Review LSLAM BALM | 经典激光SLAM方案!港大MARS出品!RAL2021 | 激光BA优化
  • RocketMQ 核心特性解析及与 Kafka区别
  • Spring AI 海运管理应用第2部分
  • Centos 7.9安装部署cobbler-自动化部署服务器完整教程
  • 数据结构第3问:什么是线性表?
  • 从0开始学linux韦东山教程Linux驱动入门实验班(7)
  • 不止 “听懂”,更能 “感知”!移远通信全新AI 音频模组 重新定义智能家居“听觉”逻辑
  • 【Datawhale AI夏令营】科大讯飞AI大赛(大模型技术)/夏令营:让AI理解列车排期表(Task3)
  • 如何将DICOM文件制作成在线云胶片
  • 一句话指令实现“2D转3D”、“图片提取线稿”
  • Kong API Gateway深度解析:插件系统与微服务架构的技术基石
  • Python爬虫05_Requests肯德基餐厅位置爬取
  • 企业微信API接口发消息实战:从0到1的技术突破之旅
  • 新注册企业信息查询“数据大集网”:驱动企业增长的源头活水
  • 笔试——Day23
  • C++ 项目 QML QtQuick.Controls“ is not installed
  • 【C语言】深度剖析指针(二):指针与数组,字符,函数的深度关联
  • 基于 Amazon Bedrock 与 Anthropic Claude 3 智能文档处理方案:从扫描件提取到数据入库全流程实践
  • C++入门基础 1