| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 网络编程(二)—— socket套接字和地址 -> 正文阅读 |
|
[系统运维]网络编程(二)—— socket套接字和地址 |
🍓什么是socket?🍓在网络编程中经常跟socket这个单词打交道,译为 “插座、插口”,而我们常称为”套接字“ 联想现实生活中的插座、插口,如电脑的USB接口,其作用就是作为两个对象之间的数据收发或能量传递;同理,在网络编程中,socket就是通过插口接入的方式,快速的完成网络连接以及数据的收发。 上图是网络编程中,TCP客户端和服务器工作的核心逻辑。 网络编程中的基本流程:
上面四个步骤中的前两个步骤,就是平时常说的TCP三次握手。在这一系列的操作中,都始终通过一个媒介进行交流,就是socket。 🍓通俗的解释socket🍓关于TCP网络交互以及数据传输的流程,大家通常都比喻为打电话,顺着这个思路,代入场景进行联想,就可以很好的从平常生活体验中理解网络编程 记住上面的核心逻辑图,按照上述的网络编程基本流程进行沉浸式代入理解
在整个通话过程中,手机(socket)是我们交流的工具,这就是socket的作用。 🍓套接字地址格式🍓什么是套接字地址?在前面我们说到了,网络通信的关键在于使用socket建立连接,而连接的基础是双方地址已知,否则就会导致无头苍蝇到处飞。套接字地址就是前面通俗解释中所说的bind()函数中的电话卡操作,而现实中电话又分两种模式:1. 常用手机电话(如16866666666);2. 固定电话(如(010)123456) 网络编程中,套接字地址格式通常分为三类:
上面三种套接字类型中都含有一个共同点:”AF_“,AF其实是 “Address Family” 的英文单词缩写,译为地址族;还有一种网络编程中常见的族:”PF”,即“Protocol Family”,译为协议族。通常AF用于初始化socket地址,PF用于初始化scoket。通过<sys/socket.h>头文件,可以找到各种地址族的宏定义
🍅IPv4🍅
上面是IPv4套接字地址格式的结构体定义。
小问题:端口号中所有端口都可以随意使用吗? 不是的,上一节知识里有提到过一个知识点——众所周知的端口号。在这里解释一下什么是众所周知的端口号,其实就是互联网发展初期,大家约定好用于某些途径一定会占用的端口号,已经被对应服务广为使用,其他人不能在随意使用这些端口号。具体有哪些保留端口可以百度一下保留端口 🍅IPv6🍅
上面是IPv6套接字地址格式的结构体定义。
🍅本地套接字地址🍅
上面是AF_LOCAL的地址格式结构体定义。
从第二个字段就可以看出这是一个用于本地进程间通信的地址格式,直接通过本地文件路径进行通信 🉑总结🉑
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 23:32:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |