头文件
函数使用int socket(int domain, int type, int protocol);
函数功能:创建一个通信的终点,并返回一个文件描述符来代表通信的终点
函数参数:
a. domain
代编当前创建的socket文件描述符使用的是哪一个协议族进行通信,这些协议族都包含在sys/socket.h
,其中主要的协议族如下:
AF_UNIX, AF_LOCAL
本地进程通信AF_INET
IPV4网络传输层协议AF_INET6
IPV6网络传输层协议AF_IP
IPX-Novell协议AF_NETLINK
内核用户接口设备PF_INET
。。。b. type
函数socket()的参数type用于设置套接字通信的类型,指定使用TCP/IP协议族中的哪个子协议进行通信,主要有SOCKET_STREAM(流式套接字)、SOCK——DGRAM(数据包套接字)
SOCK_STREAM
提供有序的、可靠的、双链接的、字节流数据传输;主要是用作TCP链接时的数据传输,此时如果想要使用TCP协议,则将domain
设置为AF_INET
即可SOCK_DGRAM
支持无链接、不可靠的数据传输,数据传输时定长;主要时用作UDP链接时的传输SOCK_SEQPACKET
提供有序的,可靠的,双链接的数据传输通道,数据长度定长,使用的时候需要将数据全部读出SOCK_RAW
RAW类型,提供原始网络协议访问;即此时我们使用的通信协议为IP 协议SOCK_RDM
提供可靠的数据报文,不过可能数据会有乱序SOCK_PACKET
当前通信类型已经过时,不应在通信程序中使用SOCK_NOBLOCK
将socket返回的文件描述符指定为非阻塞的,类似SOCK_STREAM | SOCK_NOBLOCK
表示使用面向链接的数据传输同时非阻塞SOCK_CLOEXEC
表示一旦进程执行exec
系统调用之后,将会自动关闭socket
返回的套接字文件描述符
c. protocol
特例化来一个协议,用来指定协议号
一般情况下protocol
写0,表示使用domain
和type
指定的协议,不过如果domain
和type
所指定的协议有好几个时,此时就需要通过具体的协议号来区分,否则写0即可。
所有的协议编号都被保存在了/etc/procotols
下,tcp协议编号为6,udp协议编号为17
ip 0 IP # internet protocol, pseudo protocol number
hopopt 0 HOPOPT # IPv6 Hop-by-Hop Option [RFC1883]
icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # Internet Group Management
ggp 3 GGP # gateway-gateway protocol
ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'')
...
类似如下
socket (AF_INET, SOCK_STREAM,6);
和socket (AF_INET, SOCK_STREAM,0);
都代表tcp协议
#include
#include
#include
#include
#include
#include
#include void print_err(char *str, int line, int err_no) { printf("%d, %s :%s
",line,str,strerror(err_no));_exit(-1);
}int main()
{ int skfd = -1;/*创建使用TCP通信的套接字文件描述符*/skfd = socket(AF_INET, SOCK_STREAM, 0);if ( -1 == skfd) { print_err("socket failed",__LINE__,errno);}return 0;
}
3GPP组织概述 1. TSG/WG 3GPP是以工作组开展工作的,目前有3个大的技术规范组:RAN, SA, CT, 这一级别的工作组英语写为 TSG (Technical Specification Group)。每个TSG下面又分了很多工作组(WG: work group). 详见下表: https://www.3gpp.o...
文章目录前言1. HTTP协议通信的问题1.1 tcpdump 抓取http 请求包1.2 报文分析1.3 HTTP 协议问题2. SSL & TLS 协议的基本介绍和历史演进3. TLS 1.2 实现加密传输的过程3.1 TLS HandShake 协议概览3.2 第一次握手:ClientHello3.3 第二次握手:从Server...
一、ARP协议 ARP(Address Resolution Protocol)地址解析协议,将IP地址解析成MAC地址。 IP地址在OSI模型第三层,MAC地址在OSI第二层,彼此不直接通信; 在通过以太网发生IP数据包时,先封装第三层(32位IP地址)和第二层(48位MAC地址)的报头; 但由于发送数据包时只知道目标IP地址,不...
#vi /etc/httpd/conf/httpd.conf 添加下面配置 NameVirtualHost *:80