1.在基于Linux的网络套接字编程中,如果需要创建一个IPv4的网络套接字,应该在socket函数中指定domain参数为AF_INET
解析:
socket()函数创建套接字
函数原型:int socket(int domain, int type, int protocol);
domain:协议簇,表明IP地址的类型
AF_INET : IPv4
AF_INET6: IPV6
type:socket的类型
SOCK_STREAM:面向连接的数据传输方式
SOCK_DGRAM:无连接的数据传输方式
protocol:传输协议(一般为0)
IPPROTO_TCP:TCP传输协议
IPPTOTO_UDP:UDP传输协议
返回值
成功:大于或等于0
失败:-1
2.常见的TCP/IP应用层协议有:FTP、HTTP/HTTPS、SMTP、NTP、SSH等。PPP协议属于数据链路层协议.
3.客户端TCP连接的三次握手发生在客户端connect连接的过程中。
4. IPv4使用4个字节表示IP地址;IPv6使用16个字节表示IP地址;1字节8位,IPv4是4字节32位, IPv6是16字节128位
5.TCP/IP协议网络分层中的四层分别是应用层、传输层、网络层和数据链路层
6.TCP协议是一个可靠的面向连接的传输层协议;UDP协议是一种不可靠的无连接的传输层协议;TCP协议比UDP协议在通讯上更可靠;TCP协议不支持多播和广播,而UDP协议可以支持多播和广播;TCP协议比UDP协议在数据传输前的操作更复杂;因为它需要三次握手建立连接之后,才能收发数据,而UDP协议则不需要握手连接这一步;TCP协议是面向字节流的,而UDP协议是面向报文的。
7.TCP通信只能是一对一的通信,但UDP支持一对一,一对多,多对一和多对多交互通信。
8.bind函数在客户端和服务端都可以调用,只不过常见的是服务器调用,而客户端调用很少见。 udp通信时,客户端想要指定特定端口进行通信可以使用bind函数。