TCP协议详解

TCP协议详解。

    I,TCP数据段报文解释捕获.PNG

TCP协议详解

1,tcp数据段头部20(固定)+40(可变)字节构成,此数据由报头偏移位构成,计算单位为四个字节
表示TCP报文段的首部长度,共4位,由于TCP首部包含一
个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指
出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。该字
段的单位是32位(即4个字节为计算单位), 4位二进制最大表示15,
所以数据偏移也就是TCP首部最大60字节

2,源始port16位,范围是0-65535


TCP协议详解

        代理服务器常用以下端口:
(1). HTTP协议代理服务器常用端口号:80/8080/3128/8081/9080
(2). SOCKS代理协议服务器常用端口号:1080
(3). FTP(文件传输)协议代理服务器常用端口号:21
(4). Telnet(远程登录)协议代理服务器常用端口:23
HTTP服务器,默认的端口号为80/tcp(木马Executor开放此端口);
HTTPS(securely transferring web pages)服务器,默认的端口号为443/tcp 443/udp;
Telnet(不安全的文本传送),默认端口号为23/tcp(木马Tiny Telnet Server所开放的端口);
FTP,默认的端口号为21/tcp(木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade 
Runner所开放的端口);
TFTP(Trivial File Transfer Protocol ),默认的端口号为69/udp;
SSH(安全登录)、SCP(文件传输)、端口重定向,默认的端口号为22/tcp;
SMTP Simple Mail Transfer Protocol (E-mail),默认的端口号为25/tcp(木马Antigen、Email
Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口);
POP3 Post Office Protocol (E-mail) ,默认的端口号为110/tcp;
WebLogic,默认的端口号为7001;
Webshpere应用程序,默认的端口号为9080;
webshpere管理工具,默认的端口号为9090;
JBOSS,默认的端口号为8080;
TOMCAT,默认的端口号为8080;
WIN2003远程登陆,默认的端口号为3389;
Symantec AV/Filter for MSE ,默认端口号为 8081;
Oracle 数据库,默认的端口号为1521;
ORACLE EMCTL,默认的端口号为1158;
Oracle XDB( XML 数据库),默认的端口号为8080;
Oracle XDB FTP服务,默认的端口号为2100;
MS SQL*SERVER数据库server,默认的端口号为1433/tcp 1433/udp;
MS SQL*SERVER数据库monitor,默认的端口号为1434/tcp 1434/udp;
QQ,默认的端口号为1080/udp
3,数据序号32位,TCP为发送的每一个字节都编一个号码,这里存储当前数据包数据第一个字节的序号,对应于wireshark(Seq)
    确认序号32位,为了安全,TCP告诉接受者希望他下次接到数据包的第一个字节的序号。对应于wireshark(Ack)
4,确认比特ACK—仅仅有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效
正常通信,ACK号除了三次握手时,第一二次握手不带ACK位,其余正常通信过程都应带有ACK位。
同步比特SYN—同步比特SYN置为1,就表示这是一个连接请求或连接接受报文,
只有三次握手前两次才会使用。
    复位比特RST(Reset) —当RST=1时,表明TCP连接中出现严重差错(如因为主机崩溃或其它原因),必须释放连接,然后再又一次建立运输连接
    终止比特FIN(FINal)—用来释放一个连接。当FIN=1时,表明此报文段的发送端的数据已发送完成,并要求释放运输连接
5,窗体字段16位,窗体字段用来控制对方发送的数据量,单位为字节。TCP连接的一端依据设置的缓存空间大小确定自己的接收窗体大小,然后通知对方以确定对方的发送窗体的上限。
6,可选选项24位     最大报文段长度: Maxium Segment Size, MSS
     窗口扩大: Windows Scaling
     时间戳: Timestamps
II,TCP三次握手和四次握手
TCP协议详解
三次握手.PNG
TCP过程.PNG
四次握手.PNG
三次握手:
   第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;
   第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态;
   第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。
四次挥手:
    第一次分手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;
   第二次分手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关闭请求;
   第三次分手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态;
   第四次分手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。
III,TCP有限状态机
 CLOSED 没有任何连接状态
 LISTEN 侦听状态,等待来自远方TCP端口的连接请求
 SYN-SENT 在发送连接请求后,等待对方确认
 SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
 ESTABLISHED 代表传输连接建立,双方进入数据传送状态
FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
 LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
CLOSING 双方同时尝试关闭传输连接,等待对方确认

原创文章,作者:919022966,如若转载,请注明出处:http://www.178linux.com/78578

(0)
919022966919022966
上一篇 2017-06-26 04:20
下一篇 2017-06-26 08:43

相关推荐

  • PHP5.4最新特性

    原文Oracle:LAMP 体系有了新的竞争,但此版本中的特性使 PHP 再次挑战极限。 稍微做了修改。: 概述总结:1. 内存和性能改进:大型 PHP 应用程序中可节省 20-50% 的内存。通过各种优化使性能提高 10-30%2. 支持特性Trait3. 精简数组语法,可以定义短数组4. 函数数组解除引用,支持Array dereferenci…

    Linux干货 2015-11-18
  • 流编辑器Sed(Stream Edit)详解

    流编辑器Sed(Stream Edit)详解       Grep 、sed 和awk并称为文本三剑客。使用Grep就可以很好的实现文本查找的功能,而且简单有效。然而其却无法直接对其进行编辑,sed的出现便解决了这一问题。 Sed被称为流编辑器,它是一种新型的非交互式的文本编辑器,它逐行处理文件或输入,并将结…

    Linux干货 2016-08-22
  • SSH——安全的通信

    SSH ·ssh:secure shell, protocol, 22/tcp,  安全的远程登录 ·OpenSSH:ssh协议的开源实现 ·dropbear:另一个开源实现 ·SSH协议版本:          v1:基于CRC-32做MAC,不安全;man-in-m…

    Linux干货 2016-09-25
  • Linux基础之RAID

    一.RAID介绍 RAID刚开始出现的时候叫做廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),但在当时磁盘并非像现在这么便宜,反而这种组合方式使得代价非常昂贵,所以后来改名为独立磁盘冗余阵列(Redundant Array of Independent Disks),基本的思想就是组合组合多个便宜的,性能相对较低…

    Linux干货 2016-11-08
  • 文件系统

    文件系统 文件和目录被组织成一个单根倒置树结构 文件系统从根目录下开始,用“/”表示 文件名称区分大小写 以.开头的文件为隐藏文件   一个.表示本目录。 两个..表示根目录 路径分隔的/      路径分割为正斜线分割 文件有两类数据:        元数据:metadata …

    Linux干货 2017-05-02