dpkt.Packet.IP

來源:互聯網
上載者:User
ip.py定義了IP class,應該是ip協議的實現部分。

1、IP class 繼承自 dpkt.Packet
2、IP class實現的頭結構為:
   __hdr__ = (
       ('v_hl', 'B', (4 << 4) | (20 >> 2)), #版本:4bit,預設值4,左移4位,首部長度:4bit,預設值20,右移2位
       ('tos', 'B', 0), #服務類型TOS:8bit,預設值0
       ('len', 'H', 20), #總長度:16bit,預設值20
       ('id', 'H', 0), #標識:16bit,預設值0
       ('off', 'H', 0), #位移(含3bit標誌):16bit,預設值0
       ('ttl', 'B', 64), #存留時間TTL:8bit,預設值64
       ('p', 'B', 0), #協議:8bit,預設值0
       ('sum', 'H', 0), #首部校正和:16bit,預設值0
       ('src', '4s', '\x00' * 4), #源地址:4個位元組,預設值0.0.0.0
       ('dst', '4s', '\x00' * 4) #目的地址:4個位元組,預設值0.0.0.0
       )
   可參照經典教材《TCP/IP詳解》中IP首部的定義架構:
  +------------------------------------------------+
   I IP 首部                                     I
   +--------+------------+---------+--------------+
   I 版本   I 4         I首部長度I 4           I
   +--------+------------+---------+--------------+
   I tos     I 8         I 總長度  I 16        I
   +--------+------------+---------+--------------+    
   I 標識   I 16        I標誌    I  3            I
   +--------+------------+---------+--------------+
   I 片位移I  13      I 存留時間I 8         I
   +--------+--------+--------------+-------------+
   I 協議   I 8       I 首部校正和  I  16     I
   +-----------+-----+--------------+-------------+
   I 源IP地址 I 32 I  目的IP地址 I  32     I
   +-----------+-----+--------------+-------------+

3、IP報文的選項資料(一般沒有)為opts成員變數
4、IP class重載了__str__(),並且在其中自動填滿了IP首部的校正和以及IP資料部分的校正和
5、unpack(buf)函數對傳入的buf中的內容進行解包,並將首部資料、報文體資料放到自身對象中
6、set_proto(pktclass)函數進行協議類型設定,get_proto()取得協議類型

舉個例子:
import udp
s = 'E\x00\x00"\x00\x00\x00\x00@\x11r\xc0\x01\x02\x03\x04\x01\x02\x03\x04\x00o\x00\xde\x00\x0e\xbf5foobar'

ip = IP(id=0, src='\x01\x02\x03\x04', dst='\x01\x02\x03\x04', p=17)
u = udp.UDP(sport=111, dport=222)
u.data = 'foobar'
u.ulen += len(u.data)
ip.data = u
ip.len += len(u)
#此時str(ip)==s

ip = IP(s)
#此時str(ip)==s

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.