TCP/UDP端口号调研 tcp的6个标志位

来源:互联网 发布:淘宝女包店 我爱你店 编辑:程序博客网 时间:2024/05/18 03:09

端口号分类:

知名端口

(1)公认端口(Well-Known Ports)

知名端口即众所周知的端口号,范围从0到1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP(文件传输协议)服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等等。

(2) 注册端口(Registered Ports):端口号从1025到49151。它们松散地绑定于一些服务。也是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。这些端口多数没有明确的定义服务对象,不同程序可根据实际需要自己定义。

动态端口

(1) 动态和/或私有端口(Dynamic and/or Private Ports)

动态端口的范围从1024到65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。比如1024端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。

保留端口:

(1)Unix系统有保留端口号的概念。只有具有超级用户特权的进程才允许给它自己分配一个保留端口号。

这些端口号介于1~1023之间,一些应用程序(如有名的Rlogin,26.2节)将它作为客户与服务器之间身份认证的一部分。

网络中常用的端口号:

21/tcp FTP 文件传输协议


22/tcp SSH 安全登录、文件传送(SCP)和端口重定向
23/tcp Telnet 不安全的文本传送
25/tcp SMTP Simple Mail Transfer Protocol (E-mail)
69/udp TFTP Trivial File Transfer Protocol
79/tcp finger Finger
80/tcp HTTP 超文本传送协议 (WWW)
         443/tcp HTTPS used for securely transferring web pages 

TCP的6个标志位:

先来看看TCP段格式

URG 紧急指针,告诉接收TCP模块紧要指针域指着紧要数据。

ACK 置1时表示确认号(为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。

PSH 置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。

RST 置1时重建连接。如果接收到RST位时候,通常发生了某些错误。

SYN 置1时用来发起一个连接。

FIN 置1时表示发端完成发送任务。用来释放连接,表明发送方已经没有数据发送了。

urg和psh这两个标志位的区别:
URG标志位: URG(紧急位)是表示紧急指针是否有效,当URG为1的时候就表示紧急指针是有效的。紧急指针通常情况下是无效的,当设置为有效的时候就表示数据要优先处理。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。 TCP的紧急方式是发送端向另一端发送紧急数据的一种方式,紧急指针指向的是包内数据段的某个字节(数据从第一字节到指针所指字节就是紧急数据),紧急数据是不进入缓冲区的直接交给上层进程的(一般情况下TCP是要等到整个缓存都满了再向上交付的)。 PSH标志位: PSH标志是为了提示接收端的应用程序应该立即从TCP的接收缓冲区中拿走数据,为了接收后续的数据来腾出空间(如果应用程序不将接收到的数据拿走的话,它们就会一直都留在TCP的接收缓冲区中) 。 PSH(急迫位)当PSH为1的时候,客户端发给服务器的报文段立即被服务器TCP交付给应用程序来处理,而不用等整个缓存都填满再向上交付。一般情况下,TCP是等缓冲区写满再向上交付的,当PSH为1的时候数据还是要进入缓存区向上提交的,只不过不用等缓冲区满后才提交。这里所说的数据包括与此PUSH包一起传输的数据以及之前就为该进程传输过来的数据(滞留在缓存中的数据)。 
总结:
urg标志位有效的时候,当前字节到标志位之间的数据是直接交付给上层的,无需经过缓存区。
psh标志位有效的时候,数据要进入缓存区但不用等到缓存区写满,就交付给上一层。