tcp链接端口的理解
2016-04-09 16:03
316 查看
tcp端口
tcp中的端口,一直以为tcp的端口是个类似的实体的东西,类似于存储数据的数据包的队列那种,所以一个server的端口只能处理一个链接,当server开启listen端口后,服务器接受到链接请求,server会分配一个随机的没有用到的端口给tcp链接。但是这是错的!tcp使用本地地址和远端地址组成的4元组(目的ip,目的端口,本地ip,本地端口)来处理多个链接请求。这个端口在tcp内核中紧紧是协议中的一部分,内核中仅仅通过目的端口无法确定是哪个进程接受到请求,所以需要server端的端口才能确定和客户端的链接。另外只有处于listen状态中的进程才能接受新的链接请求。当有新的请求到达并且被接受,内核会创建一个处于estableished状态的链接,而且端口号不变与listen的端口号一致。
看个��
我们起一个服务,我这里起了个hexo服务,使用4000端口号
使用命令,查看链接
netstat -a -n -f inet
可以看到一个处于listen的4000端口,显示本地地址*.4000, 远端地址是*.*,这表明可以接受任意主机的请求
tcp4 0 0 *.4000 *.* LISTEN
这时候我们telnet 4000这个端口,可以看到有两个新的请求,一个本地端口4000 远端端口60352,这是server上的链接,另一个本地60352,远端4000,这是telnet客户端的链接
tcp4 0 0 *.4000 *.* LISTENtcp4 0 0 127.0.0.1.4000 127.0.0.1.60352 ESTABLISHED
tcp4 0 0 127.0.0.1.60352 127.0.0.1.4000 ESTABLISHED
关于tcp的更多知识,tcp详解 18章,unix网络编程,都有对tcp进行详细的描述。
相关文章推荐
- Linux 自检和 SystemTap
- 一张图看尽 Linux 内核运行原理
- TCP版backshell的VBS脚本代码
- Linux内核链表实现过程
- 使用C语言编写基于TCP协议的Socket通讯程序实例分享
- TCP Wrappers防火墙介绍与封锁IP地址的方法
- c语言多进程tcp服务器示例
- win2003连接限制TCP连接限制
- PowerShell脚本开发之收发TCP消息包
- Nodejs创建TCP服务器 - king0222
- PHP内核探索之解释器的执行过程
- 深入理解PHP内核(二)之SAPI探究
- C#实现TCP连接信息统计的方法
- linux shell 脚本实现tcp/upd协议通讯(重定向应用)
- 使用C#实现基于TCP和UDP协议的网络通信程序的基本示例
- Android使用socket创建简单TCP连接的方法
- Android实现TCP客户端接收数据的方法
- Android TCP 文件客户端与服务器DEMO介绍
- Android中实现TCP和UDP传输实例
- C++中Semaphore内核对象用法实例