如何深入理解TCP/IP协议的listen实现
发表于:2025-01-27 作者:千家信息网编辑
千家信息网最后更新 2025年01月27日,如何深入理解TCP/IP协议的listen实现,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。listen函数的逻辑比bind还简单。
千家信息网最后更新 2025年01月27日如何深入理解TCP/IP协议的listen实现
如何深入理解TCP/IP协议的listen实现,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
listen函数的逻辑比bind还简单。bind主要是校验和绑定ip、端口。listen则是修改socket的状态,并记录一些设置。
static int sock_listen(int fd, int backlog)
{
struct socket *sock;
if (fd < 0 || fd >= NR_OPEN || current->files->fd[fd] == NULL)
return(-EBADF);
if (!(sock = sockfd_lookup(fd, NULL)))
return(-ENOTSOCK);
if (sock->state != SS_UNCONNECTED)
{
return(-EINVAL);
}
if (sock->ops && sock->ops->listen)
sock->ops->listen(sock, backlog);
// 设置socket的监听属性,accept函数时用到
sock->flags |= SO_ACCEPTCON;
return(0);
}
static int inet_listen(struct socket *sock, int backlog)
{
struct sock *sk = (struct sock *) sock->data;
// 如果没有绑定端口则绑定一个,并把sock加到sock_array中
if(inet_autobind(sk)!=0)
return -EAGAIN;
if ((unsigned) backlog > 128)
backlog = 128;
// tcp接收队列的长度上限,不同系统实现不一样,具体参考tcp.c的使用
sk->max_ack_backlog = backlog;
// 修改socket状态,防止多次调用listen
if (sk->state != TCP_LISTEN)
{
sk->ack_backlog = 0;
sk->state = TCP_LISTEN;
}
return(0);
}
// 绑定一个随机的端口,更新sk的源端口字段,并把sk挂载到端口对应的队列中,见bind函数的分析
static int inet_autobind(struct sock *sk)
{
/* We may need to bind the socket. */
if (sk->num == 0)
{
sk->num = get_new_socknum(sk->prot, 0);
if (sk->num == 0)
return(-EAGAIN);
put_sock(sk->num, sk);
sk->dummy_th.source = ntohs(sk->num);
}
return 0;
}
关于如何深入理解TCP/IP协议的listen实现问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
端口
函数
问题
更多
状态
队列
分析
帮助
解答
不同
易行
简单易行
上限
内容
字段
小伙
小伙伴
属性
方法
知识
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器的集成显卡是哪种
无线网络安全系统实现总结
妇联网络安全宣传方案
数据库全外连接实例
智联互联网络技术大学目标
cpu天梯图服务器
没有查询到对应的数据库
国产组态软件开发语言
泰安软件开发报价
数据库考证试题及答案
等保2.0服务器安全合规
查询华为服务器登录用户名
战地五刀战服务器咋进
陕西省委网络安全
济南舜脉互联网科技
管道美化软件开发
数据库文件的保存目录
数据库如何转换为网络数据库
云服务器安全吗对接
上海前端软件开发定制费用
船舶电气三维设计系统软件开发
南京简睿捷软件开发
jdbc连接oracle数据库步骤
有关网络技术的工作
如何面试软件开发应聘者
互联网与科技融合的应用
福建软件开发定制服务价格
调研报告网络安全ppt
计算机网络技术实验报告写
初学软件开发语言