认识套接字Socket
来源:互联网 发布:安禄山 杨贵妃 知乎 编辑:程序博客网 时间:2024/05/16 07:31
套接字概述
套接字是抽象出来的概念,是应用程序进行网络通信的接口,对套接字的操作最终都会调用内核中的网络驱动程序,对系统应用程序开发,内核驱动透明不可见,用户只需创建一个套接字(socket),调用套接字API即可使用网络进行通信,相当便捷;在linux系统中,套接字就是一个文件;一个套接字对应一个套接字地址结构,套接字地址结构包括:网络协议、本地IP地址、本地端口,远程IP地址、远程端口;
套接字地址结构
使用struct sockaddr(通用套接字地址结构)这个结构来存储套接字地址,结构定义如下:
struct sockaddr{unsigend short sa_family; /*address族,AF_xxx*/char sa_data[14]; /*14bytes的数组表示来表述套接字的端口号和IP地址*/}
由于使用14字节大小的数组描述套接字的IP地址和端口号很不方便,程序员们又建立了另外一个相似的结构struct sockaddr_in,结构定义如下:
struct sockaddr_in{__SOCKADDR_COMMON(sin_); /*相当于sa_family_t sin_family;2 bytes*/in_port_in sin_port; /*端口号,2 bytes*/struct in_addr sin_addr; /*4bytes*/unsigned char sin_zero[sizeof(struct sockaddr) - /*16-2-2-4 = 8*/ __SOCKADDR_COMMOM_SIZE - sizeof(in_port_t) - sizeof(struct in_addr)];}
套接字三种类型
流式套接字
流式套接字提供可靠的、,面向连接的通讯流,如果你通过流式的套接字发送“3”,“2”,“1”,那么到达远程的数据顺序也是“3”,“2”,“1”;这是因为流式套接字使用TCP协议传输数据,保证了数据的可靠性和顺序性;Telnet和HTTP协议都是流式套接字的应用;
数据包套接字
数据包套接字是一种无连接的的服务,数据通过相互独立的报文进行传输,数据无需且不可靠,无差错处理和重传机制;因为数据包套接字使用UDP协议,UDP协议本身就是不可靠的;tftp是数据包套接字的应用;
原始套接字
原始套接字允许对底层的协议,如IP、ICMP协议直接访问,常用于对网络协议实现的测试,需要用到具体的TCP/IP协议层的知识,后续博文会总结原始套接字的使用;
0 0
- 认识套接字Socket
- Socket(套接字)
- socket 套接字
- Socket(套接字)
- 套接字(Socket)定义
- 18.3 Socket套接字
- SOCKET套接字
- socket套接字
- Java 套接字(Socket)
- 什么是套接字(Socket)?
- 套接字(Socket)
- Socket套接字
- 关于 socket 套接字
- 套接字(Socket)
- Java套接字(Socket)
- Socket(套接字)
- Socket套接字
- socket--套接字通信
- 51单片机---麻雀虽小,五脏俱全
- 【LeetCode】 136. Single Number
- 第一节课:C过度到C++--之一
- Android View 工作流程
- plsql 导出数据到 excel
- 认识套接字Socket
- 文件内存映射 DLL共享 WM_COPYDATA
- 【LeetCode】 141. Linked List Cycle
- 微信支付踩坑记录
- 用Nodejs实现文件服务器(一)
- 在app的gradle中添加不审核图片类型
- PL/SQL Developer 导入或者导出CSV文件
- Java运行时常量池与final修饰符的关系
- 大小端模式