端口号、常见协议和套接字

一、端口号的理解:

1、当一个udp报文到达时,操作系统使用目的端口号来选择正确的进程。目的端口号用来表示目的主机上唯一的socket,而socket用关联到了唯一的一个进程,ip用来标识网络中唯一的一台主机,这两个结合起来就可以标记网络中唯一一台主机上的唯一一个进程;端口号是一个两字节16位的整数,可以表示0~65535个端口号,其中0------1024由系统分配,其他的由用户自行分配

2、一个进程可以创建多个socket,但是一个socket只对应一个进程,因此一个进程可能对应多个端口

二、对于UDP,TCP,IP,HTTP的理解:

TCP,采取字节流方式,SOCK_STREAM,可靠;UDP,采取数据报的方式,SOCK_DGRAM;

这两者是传输层协议,基于在网络层的IP协议。

HTTP协议基于TCP协议,是应用层协议,可靠性来源于TCP。

三、关于socket的理解:

socket=ip+端口号,用于描述ip地址和端口,是一个通信句柄;socket可以面向tcp有链接,也可以面向udp无链接;socket中服务器的端口号固定,但是客户端的端口号不固定,并且推荐采取不绑定策略


任何操作系统交互的唯一方式就是通过进程。进程是人在操作系统中的代表,任务就是进程,

进程拿到数据,就是人拿到了数据。

数据传输到主机不是目的,而是手段;到达主机内部将数据交给主机使用才是目的

上网只有两种行为:将自己的数据上传到远端服务器,从远端服务器获取数据

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

IO

网络通信的本质:两个不同主机进程之间的数据交互-》网络通信本质上是进程之间的通信

端口号:

1、是一个两字节16位的整数

2、端口号用来表示一个进程,告诉当前的数据要交给那个进程处理

那为什么不用pid呢?因为不是所有进程都要进行网络通信,而且pid是一个系统的概念,

只要pid变化了网络就也要发生改变。所以单独设计端口号就是因为要与系统解耦。

IP是全网内唯一的一个主机,port是该主机内唯一的一个网络进程

综上IP + port表示全网内唯一的一个进程

即socket = ip + port,socket即套接字

端口号范围划分:

0-1023:知名端口号,HTTP, FTP, SSH,他们的端口号是固定的

1024-65535:操作系统动态分配的端口号

网络属于操作系统,用户访问必须通过系统调用,网络协议栈每一层都有具体的协议

TCP,传输层协议,有连接,可靠传输,面向字节流

------做更多的工作,复杂,占有资源多

UDP,传输层协议,无连接,不可靠传输,面向数据报

------做的更少,简单,占有资源较少

大端vs小端:大小端按照字节为单位,小端就是低字节序在低地址

TCP\IP协议规定,传输数据时统一采用大端字节序传输,比较符合人类的阅读习惯(其实没有

确定的答案)

system V --- 主要进行本地通信

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

相关推荐
姚不倒几秒前
Keepalived 系列(二):生产最佳实践与面试考点
运维·keepalived·haproxy
pt10431 分钟前
网络自动化Python课程:利用Cisco NSO编排网络服务
运维·网络·自动化
tedcloud1236 分钟前
OpenLogi 怎么搭建?用 Rust 打造一个轻量的 Logitech 外设管理工具
linux·运维·服务器·开发语言·后端·rust·开源
AAA代码批发商12 分钟前
Days 39 Linux C 开发之 SQLite 数据库完整学习笔记
linux·c语言·数据库
七夜zippoe1 小时前
DolphinDB 运维工具实战:自动化脚本体系设计与落地(2.0.x)
运维·dolphindb·自动化脚本·体系设计·体系落地
Wang's Blog1 小时前
Vibe Coding一人即团队系列54:云服务器 Node.js 与 MySQL 9 环境搭建及配置指南
服务器·人工智能·mysql·node.js
玉&心1 小时前
在Docker中部署前端和后端的实现
运维·docker·容器
额额额对了1 小时前
Linux 数据库开发实战:使用 C 语言与 SQLite3 构建轻量级终端词典
linux·数据库·oracle
爱笑鱼1 小时前
Android 系统启动机制(六):Zygote 创建 App 为什么走 Socket?哪些是源码事实,哪些是架构解释?
android·linux
全栈技术负责人1 小时前
DeepSeek Harness 业务工具权限插件 dsh-tool-permission设计思路
网络·算法·ai·ai编程