口碑好的邵阳网站建设,网站建设相关资料整理的重要性,沈阳企业网站开发定制,五金制品网站源码8. TCP/UDP 段 
目标 了解 TCP 段头的组织结构了解 UDP 段头的组织结构掌握 TCP/UDP 段的解析方式 
8.1. UDP 段格式 
下图是UDP的段格式#xff08;该图出自[TCPIP]#xff09;。 8.2. UDP头部 //UDP头部#xff0c;总长度8字节// /usr/include/linux/udp.h
struct udphdr …8. TCP/UDP 段 
目标 了解 TCP 段头的组织结构了解 UDP 段头的组织结构掌握 TCP/UDP 段的解析方式 
8.1. UDP 段格式 
下图是UDP的段格式该图出自[TCPIP]。 8.2. UDP头部 
//UDP头部总长度8字节// /usr/include/linux/udp.h
struct udphdr {__be16    source;     //源端口号__be16    dest;       //目的端口号__be16    len;        udp数据长度__sum16    check;     // //16位udp检验和
}; 
8.3. TCP段格式 
TCP的段格式如下图所示该图出自[TCPIP] 和UDP协议一样也有源端口号和目的端口号通讯的双方由IP地址和端口号标识。32位序号、32位确认序号、4位首部长度和IP协议头类似表示TCP协议头的长度以4字节为单位因此TCP协议头最长可以是4x1560字节如果没有选项字段TCP协议头最短20字节。保留 6位 新的版本下保留4位 增加两位标志介绍从略URG、ACK、PSH、RST、SYN、FIN是六个控制位16位窗口大小16位检验和将TCP协议头和数据都计算在内。紧急指针和各种选项的解释从略。 8.4. TCP头部 //TCP头部总长度20字节// /usr/inlcude/linux/tcp.hstruct tcphdr {__be16  source;         //源端口号__be16  dest;           //目的端口号__be32  seq;            //序列号__be32  ack_seq;        //确认号
#if defined(__LITTLE_ENDIAN_BITFIELD)__u16   res1:4,doff:4,fin:1,syn:1,rst:1,psh:1,ack:1,urg:1,ece:1,cwr:1;
#elif defined(__BIG_ENDIAN_BITFIELD)__u16   doff:4,     //tcp头部长度res1:4,     // 保留 4位cwr:1,ece:1,urg:1,ack:1,psh:1,rst:1,syn:1,fin:1;
#else
#error  Adjust your asm/byteorder.h defines
#endif  __be16  window;     //16位窗口大小__sum16 check;      //16位TCP检验和__be16  urg_ptr;    //16为紧急指针
}; 
9. SSH协议解析 
目标 了解ssh协议了解ssh协议探测方法简洁 
9.1. ssh协议 
全称为Secure Shell即很安全的shell主要目的是用来取代传统的telnet和r系列命令rloginrshrexec等远程登录和远程执行命令的工具实现远程登录和远程执行命令加密防止由于网络监听而出现的密码泄露从而对系统构成威胁。telnet协议采用明文传送密码数据传送过程中也不加密 ssh协议目前有ssh1 和ssh2其实现在我们主要使用的也是openssh。ssh不仅在登录过程中对密码进行加密传送而且在登录后执行的命令的数据也进行加密这样即使别人在网络上监听并截获了你的数据包他也看不到其中的内容。 
在网络安全防护中 “信息系统具备防窃听” 这条要求的本质就是要用密文传输的ssh替代明文传输的telnet.... 
9.2. ssh完整流程实例分析 
通过ssh远程控制的一个完整个过程来讲ssh的过程可分为以下3部分 
版本协商 
算法协商与密钥交换 
这其中第二部分是ssh最为核心的过程该过程决定了以后通信所要使用的密钥下面按顺序对每个部分对比着数据包进行详细的讲解并给出实现的过程。9.2.1. 版本协商 
在建立连接后客户端与服务器分别向对方发送自己ssh的版本信息这里的数据格式不同于其他包只有一行版本号以\r\n结束。版本的格式如下 SSH-ssh协议版本-详细版本\r\n  在图中 橙色部分为tcp建立链接的三次握手 
9.2.2. 算法协商与密钥交换 
先看图 算法协商第158Key Exchange init开始分别为双发向对法发送的自己在不同密码需求上支持的算法。 
加密通信可能含有2、3部分 
9.2.3. 加密通信 
上图 从 Client: Encrypted packet 开始 开始进行加密的通信 9.3. 拓展内容 
9.3.1. 关于ssh相关的几个概念 
在介绍ssh协议之前有几个涉及到的基本概念首先需要介绍它们对于理解ssh协议本身有非常重要和关键的作用。 
加密 
加密的意思是将一段数据经过处理之后输出为一段外人无法或者很难破译的数据除了指定的人可以解密之外。 一般来说加密的输入还会有一个key这个key作为加密的参数 而在解密的时候也会用一个相关联(有可能是相同)的key作为输入。 
简单的说 密文  明文  key 
对称加密 
所谓的对称加密是说加密方和解密方用的都是同一个key这个key对于加密方和解密方来说是保密的第三方是不能知道的。在第三方不知道私钥的情况下是很难将加密的数据解密的。一般来说是加密方先产生私钥然后通过一个安全的途径来告知解密方这个key。 
非对称加密 
非对称加密是说解密的一方首先生成一对密钥一个私钥一个公钥私钥不会泄漏出去而公钥则是可以任意的对外发布的。用公钥进行加密的数据只能用私钥才能解密。加密方首先从解密方获取公钥然后利用这个公钥进行加密把数据发送给解密方。解密方利用私钥进行解密。如果解密的数据在传输的过程中被第三方截获也不用担心因为第三方没有私钥没有办法进行解密。 
非对称加密的问题还包括获取了公钥之后加密方如何保证公钥来自于确定的一方而不是某个冒充的机器。假设公钥不是来自我们信任的机器那么就算我们用非对称加密也没有用因为加密之后的数据是发送给了冒充的机器该机器就可以利用它产生的私钥进行解密了。所以非对称加密里面比较重要的一步是身份认证。 
需要说明一下一般的对称加密都会比非对称加密快所以大数据量的加密一般都会使用对称加密而非对称加密会作为身份验证和交换对称加密秘钥的一个手段。 
数据一致性/完整性 
数据一致性说得是如何保证一段数据在传输的过程中没有遗漏、破坏或者修改过。一般来说目前流行的做法是对数据进行hash得到的hash值和数据一起传输然后在收到数据的时候也对数据进行hash将得到的hash值和传输过来的hash值进行比对如果是不一样的说明数据已经被修改过如果是一样的则说明极有可能是完整的。 
目前流行的hash算法有MD5和SHA-1算法。 
9.3.2. 参考 
RFC4251