网络协议---TCP---socket bind listen accept listen函数 未决连接队列

本文详细介绍了TCP网络通信中的关键步骤,包括socket创建、bind绑定IP和端口、listen转换成被动socket及设置未决连接队列大小、accept函数处理未决连接以及connect主动发起连接的过程。强调了listen函数的作用和未决连接队列的管理,讨论了全连接队列和半连接队列在满载情况下的处理策略,并提到了accept函数在防止DDoS攻击中的角色。此外,还涵盖了read、write函数在网络通信中的应用以及connect函数可能出现的错误情况。
摘要由CSDN通过智能技术生成

扩展:INADDR_ANY:实现一个socket接口同时监听本地的多个IP
socket选项总结(setsocketopt)
※※※※Socket中SO_REUSEADDR详解

???SO_SNDBUF???
地址转换函数
在这里插入图片描述
1、传输层协议主要用于主机的进程与进程之间的相互通信
2、网络层协议主要应用于主机与主机之间的相互通信,
所以网络通信本质上是进程间通信。

套接字socket
1、是一种文件,用于进程间网络通信的文件类型→可使用文件描述符引用套接字
		与管道类似的,区别在于
			1、管道主要应用于本地进程间通信,
			2、套接字一般应用于网络进程间(不同主机的进程间)数据的通信,
2、本质是内核创建的缓冲区(连接结束后也由内核释放) 

在TCP/IP协议中,是用“IP地址(互联网中主机地址)+TCP/UDP端口号(唯一的标识进程)”的方式来进行网络通信

1、socket:创建初始套接字(未绑定IP和port)

在这里插入图片描述
Socket函数中的三个参数其实就是把抽象的socket具体化的条件,
1、domain参数决定了图中所示的第二层通信域
2、type决定了第三层的通信模式
3、protocol决定了第四层真正的通信协议。

#include <sys/socket.h>
int socket(int domain, int type, int protocol);

1、domain: 【网络协议通信】类型
  AF_INET:表示使用IPv4通信 
  AF_INET6 表示使用IPv6通信 
  AF_UNIX:本地协议,就是当客户端和服务器在同一台电脑的时候使用,(Unix和Linux系统上使用)。

2、type: 套接字的类型,常用的有流式套接字/数据报套接字。 
  SOCK_STREAM(流式套接字)		默认协议:TCP
  SOCK_DGRAM(数据报套接字)		默认协议:UDP
  SOCK_RAW(原始套接字)			ICMP协议。(ping、traceroute使用该协议)

3、protocol: 确定通信协议内细分的具体通信方式//0表示使用默认协议  

4、返回值说明: 
	成功返回一个新的文件描述符;失败返回-1,同时设置errno

2、bind::将ip+port和socket创建的套接字绑定在一起

#include <sys/socket.h>
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

参数说明: 
1、sockfd:socket函数返创建的套接字文件描述符
2、addr:【套接字地址结构体指针】(包括了IP地址和端口号) 通用指针类型:实际上是可以接受多种协议的sockaddr结构体,
		若=0则内核会随机绑定一个临时端口。
		
3、addrlen:是参数addr这个套接字地址的结构大小,即sizeof(struct sockaddr)		 以适应不同长度的sockaddr
			
4、返回值:成功返回0,失败返回-1同时设置errno变量


绑定的端口号应1024~65535范围 且没有被其他进程占用
【1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值