• 字节序:

    • 主机字节序(host byte order):不同的主机有不同的字节序,x86:小端;
    • 网络字节序(network byte order):大端字节序;

0. 什么是套接字

  • 套接字是网络进程间的通信(网络进程间通信,又叫 network IPC)接口,进程用该接口能够与其他进程通信,无论是否在同一台计算机上,
  • 套接字是对通信端点的抽象,就像文件描述符(file descriptor)是对文件的抽象表示;

1. 基本概念

  • socket 可以看成是用户进程(Application,工作在用户空间)与内核网络协议栈(内核空间,kernel space)的编程接口(称为套接口);

    • 以实现用户空间的应用对内核网络协议栈提供的服务的访问和调用;

    socket 以下的 UDP/TCP、IP、Channel 等即为内核网络协议栈;

2. IPv4 套接字地址接口

$ man 7 ip

IPv4 套接字地址结构通常也称为“网际套接字地址结构”,以sockaddr_in命名,定义在 <netinet.h>中:

struct sockaddr_in {sa_family_t    sin_family; /* address family: AF_INET */in_port_t      sin_port;   /* port in network byte order */struct in_addr sin_addr;   /* internet address */
};/* Internet address. */
struct in_addr {uint32_t       s_addr;     /* address in network byte order */
};
  • AF_INET:代表的是 IPv4 协议;

    • 此外还有 Unix 域协议;
  • Network byte order:网络字节序;

3. 通用地址结构

使不同协议间的套接字地址兼容。

struct sockaddr {uint8_t sin_len;sa_family_t sin_family;char sa_data[14];
}
  • sin_len:整个 sockaddr 结构体的长度;
  • sin_family:指定该地址家族;
  • sa_data:由 sin_family 决定其形式;

4. 字节序转换函数

uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t hostlong);
uint16_t ntohs(uint16_t hostshort);
  • h:host,表示主机(主机字节序);
  • n:network,表示网络(网络字节序);
  • s:short,l:long

转载于:https://www.cnblogs.com/mtcnn/p/9421268.html

套接字(socket)与socket 编程相关推荐

  1. 网络套接字(Network socket)

    网络套接字(英语:Network socket:又译网络套接字.网络接口.网络插槽)在计算机科学中是电脑网络中进程间资料流的端点.使用以网际协议(Internet Protocol)为通信基础的网络套 ...

  2. 基于原始套接字(raw socket)的网络抓包工具

    基于raw socket的网络抓包工具 1. 原始套接字(raw socket)简介 原始套接字可以接收本机网卡上的数据帧或者数据包,利用raw socket可以编写基于IP协议的程序.一般的TCP/ ...

  3. Linux小知识--原始套接字(raw socket)之模拟ping

    原始套接字-raw socket 最近在研究高并发下扫描存活主机,基本想法是通过socket来模拟ICMP报文,然后就发现了socket的一片新天地----原始套接字(raw socket). raw ...

  4. 套接字技术java_java网络编程之套接字TCP

    套接字学习 什么是套接字? 计算机网络基础知识 基于套接字的网路编程案例? 什么是套接字? 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程 ...

  5. TCP套接字(网络)编程

    简单的TCP网络编程 本文中用到的内容可在另一篇博客中见到UDP套接字编程 一. 初识TCP协议 TCP叫做传输控制协议.它具有以下特点: (1)传输层的协议 (2)面向连接:基于TCP进行网络通信时 ...

  6. java 套接字 访问tcp_Java 网络编程(五) 使用TCP/IP的套接字(Socket)进行通信

    套接字Socket的引入 为了能够方便地开发网络应用软件,由美国伯克利大学在Unix上推出了一种应用程序访问通信协议的操作系统用调用socket(套接字). socket的出现,使程序员可以很方便地访 ...

  7. 套接字的秘密—socket与sock

    那么如何把套接字和文件联系起来呢? 答案就是通过下面这张图. 其中task_struct表示一个进程,files_struct中的fd_array[]表示该进程打开的所有描述符,对于套接字来说,与其他 ...

  8. c语言socket鉴权,建立套接字后进行socket.io身份验证

    小编典典 这实际上并不难,但是您正以错误的方式进行处理.几件事: 您不能使用socket.io 设置 cookie:但是,您可以随时获取任何已连接客户端的cookie值.为了设置cookie,您将必须 ...

  9. Linux小知识--原始套接字(raw socket)之自定义以太网帧发送与接收

    最近这是研究原始套接字有些上头了,就是抱着学习的心态,仔细研究了一下socket的的参数 int socket(int domain, int type, int protocol); 别看就三个参数 ...

  10. 基于TCP/IP的套接字服务器端和客户端编程

    (本文章内容来源于网络,仅供学习之用,别无二心,希望不要有纠纷,谢谢!) 基于 TCP 的套接字编程的所有客户端和服务器端都是从调用socket 开始,它返回一个套接字描述符.客户端随后调用conne ...

最新文章

  1. 测试点2和测试点4错的来:1044 火星数字 (20分)
  2. 51NOD 1212 无向图最小生成树
  3. Ionic系列——使用ng-cordova插件
  4. 曲线在三维空间的旋转计算以及Matlab实例实现
  5. 深入浅出通信原理笔记(1)
  6. java垃圾回收文件分析
  7. Git学习————Eclipse工程中Git图标
  8. 开关电源电路图讲解。多图!!!
  9. win8虚拟机_老司机教你如何在虚拟机安装win8系统,双系统也可以这样实现
  10. Java内存模型(JMM)学习总结
  11. word表格复制到excel回车换行问题 1
  12. 【夜读】丰富自己的4个习惯,请逼自己养成
  13. 思域第三方app安装方法(提权)
  14. 在Windows电脑上修改图片内存大小的方法
  15. pytest【marker标记】
  16. 什么是FPGA工程师的核心竞争力
  17. 越狱Season 1-Episode 20: Tonight
  18. 深度学习-兼顾工作与孩子
  19. python如何赚钱? python爬虫如何进阶? python就业? 如何快速入门python?
  20. 正负样本的分配atss

热门文章

  1. mtk6589显示子系统笔记(一)
  2. git diff的用法
  3. alexa http 请求
  4. Windows下删除.svn文件夹的最简易方法
  5. (1)opencv的安装和遇到的问题
  6. jQuery单选按钮监听事件
  7. 架构实战项目心得(三):JAVA和MAVEN的环境配置
  8. UnityShader入门精要-3.3 UnityShader的结构
  9. 实验6 在应用程序中播放音频和视频
  10. 探索 Java 同步机制[Monitor Object 并发模式在 Java 同步机制中的实现]