当前位置: 首页 > 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.dtcms.com/a/306305.html

相关文章:

  • 面记 | android 应用开发(某半导体公司)
  • LoRaWAN协议,提升公用事业能源效率的“隐形引擎”
  • 动态规划Day5学习心得
  • windows本地使用conda部署Open-webui
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-48,(知识点:BUCK电路的损耗,开关损耗,导通损耗,电感损耗、驱动损耗)
  • BeeWorks Meet:私有化部署,重塑高安全需求行业的视频会议体验
  • ubuntu自动搭建Android平台NDK编译环境
  • C++11 std::function 详解:通用多态函数包装器
  • nav2--安装/教程
  • 中大网校社会工作师培训持续发力,多维度提升服务效能
  • 论文阅读|ArxiV 2024|Mamba进一步研究|VSSD
  • 【AI 数据管理】Text2SQL:当AI成为你和数据库之间的金牌“翻译官”
  • 亚马逊Kiro重塑AI编程:从“氛围编码”到规范驱动的革命
  • 排序算法入门:直接插入排序详解
  • 应用宝(MediaRouteProviderService)媒体路由保活思路研究
  • 从 “内容篮子” 到 “生态平台”:融媒体 App 靠什么打破服务边界?
  • 在 Mac 上用 Vagrant 安装 K8s
  • JavaScript语法、关键字和变量
  • 提高建筑舒适度与能源效率,楼宇自控系统意义重大
  • 极致业务弹性 密度性能双管齐下—联想问天 WR5220 G5 服务器测试
  • 将 qt 构建为静态库
  • 2025年电子设计大赛G题《电路模型探究装置》各小问数学推导及个人思路
  • 信贷风控笔记8-解读商业银行资本管理办法笔记
  • 检索排序(Re-ranking):搜索与推荐系统的精细化利器
  • MySQL 中的 Binlog 及其在删除数据库时的作用:点时间恢复(PITR)
  • Python .toml 安装文件介绍
  • 使用git提交时出现了报错,新手不会的可以参考一下。
  • 技术复盘报告:Vue表格中多行文本字段数据保存丢失问题
  • 深入浅出设计模式——创建型模式之单例模式 Singleton
  • Docker离线安装依赖包地址