网络的学习 2 Socket

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

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

上网的行为

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

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

  1. 本地数据,上传到远端服务器 -> 之间都是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

相关推荐
zhikouai17 分钟前
把外部助手接进聊天软件的架构分层与参数配置
服务器·网络·php
huainingning20 分钟前
锐捷10.X路由器版本升级不生效问题排查
运维·网络·智能路由器
荣合技术服务35 分钟前
HPC 超算集群故障维修实录:找荣合科算维护后,模拟仿真计算又能跑了
运维·服务器·超算服务器·荣合科算
QZ166560951594 小时前
政务泛监测体系能力排行:AI 重塑监测边界,治理的颗粒度革命
网络·人工智能·安全·网络安全·政务
叼烟扛炮4 小时前
Linux 学习笔记(五十八):IO 多路复用封神——epoll 底层原理揭秘
linux·运维·服务器·网络·笔记·学习·php
叼烟扛炮4 小时前
Linux 学习笔记(五十一):数据链路层与 ARP 协议——局域网寻址与黑客骗局
linux·网络·网络协议·php·tcpdump
星恒随风5 小时前
Linux网络编程:彻底理解IO多路复用select!从fd_set位图、读写就绪到手写TCP多客户端字典服务器
linux·服务器·网络
xyzzklk7 小时前
在Open-WebUI中提升向量化速度
网络·人工智能·爬虫·ai·语言模型·自然语言处理·安卓
Oiiouui7 小时前
linux服务器部署Logto后端与对应前端的实现
linux·服务器·前端·后端
ITKEY_8 小时前
用 Emacs Dired 实现 em:退出文件管理器后,让终端自动切换目录
linux·服务器·emacs