├── .DS_Store ├── README.md ├── 实验一 HTTP代理服务器 ├── .DS_Store ├── HTTP代理服务器.pos ├── yan.cpp ├── 实验 1:HTTP代理服务器的设计与实现.pdf └── 实验1_计算机网络2018.doc ├── 实验三 IPv4分组收发实验 ├── .DS_Store ├── Untitled Diagram.pos ├── ipv4.cpp ├── ~WRL0001.tmp ├── 实验 4:IPv4分组收发实验.pdf └── 实验3_计算机网络2018.doc ├── 实验二 可靠数据传输协议 ├── SR-客户端.cpp ├── SR-服务器端.cpp ├── client.cpp ├── server.cpp ├── 基于SR的双向数据传输-客户端.cpp ├── 基于SR的双向数据传输-服务器端.cpp ├── 实验 2:可靠数据传输协议 -GBN协议的设计与实现.pdf └── 实验2_计算机网络2018.doc └── 实验四 IPv4分组转发实验 ├── .DS_Store ├── Untitled Diagram.pos ├── lab5.cpp ├── 实验 5:IPv4分组转发实验.pdf └── 计算机网络实验4报告.doc /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/.DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HIT-Computer-Network 2 | 2018哈工大计算机网络实验 3 | -------------------------------------------------------------------------------- /实验一 HTTP代理服务器/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/实验一 HTTP代理服务器/.DS_Store -------------------------------------------------------------------------------- /实验一 HTTP代理服务器/HTTP代理服务器.pos: -------------------------------------------------------------------------------- 1 | {"diagram":{"image":{"height":673,"pngdata":"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tu0bevXqlehxXHxHfHy8hg8fftL9w4cPV1xcXNMFAoAoRoELxKDc3NzdruvOcF33PJ/PN0LSXyQdU0Vj2pKUlJQCv9//rN/v7+dtUtR0qiEIDE8AgLqjwAViG41pUeSSSy5RcnLycduTk5PVv39/DxIBQHSiwAWaiUhqTMOJJSQkaOjQocdtHzZsmBISEjxIBADRiQIXaIZoTItcJxqKwPAEADgzLPQANGOVK6a9Juk1VkyLDIMGDVLLli31zTffSJJatmypgQMHepyqeQgEArIsi28vgBjAFVwAkmhMixQtW7bU4MGDq38eMmSIWrZs6WEiAIg+FLgAvovGNI/VXPShLgtAAABqo8AFcFJ1aUyTtOhPf/qTjDHeho0hNRvNTtR0BgA4NQpcAHVyqsa0KVOmaOzYsXr55ZdVWFjocdLol5ycrKFDh2rYsGFKSkryOk6z4TiObNvmLzUgBtBkBuCMnKgxrUuXLtN3796t+fPn64UXXtCAAQM0duxYXXrppUxv9T2NGjVK9DsBwPdDgQvge8vNzd0taUZOTs5013X15ptv6p133lF2drays7PVpk0bXX755Ro7dqx69+7tddxawuGwsrKytHLlSm3btk1FRUVeRzqhqVOneh3hOHFxcerWrZvS09M1ZcoUderUyetIAFALBS6AerFt22RkZCgQCMhxHP3ud7/TW2+9pTfffFOffPKJFi9erCVLlujf/u3fNHbsWP30pz/VWWed5WnmcDis++67T+vWrfM0R7QKhULavn27tm/frjVr1mju3LlyHMfrWABQjQIXQINq3bq1rrvuOl133XXKz8/Xm2++qVWrVmnLli3asmWLnnnmGY0cOVJjx45VRkaGJ1/DZ2Vlad26derVq5cyMzPVu3fvEy6RixMLhULat2+fli9frvnz52vatGlasmSJEhMTvY4GAJJoMgPQiHr27Kn77rtPq1ev1qxZszR48GCVlZVp9erV8rIxbeXKlZKkzMxM+f1+itszFBcXp7S0NE2aNEkZGRnatWuXPv74Y69jAUA1ClwAja5Fixb68Y9/rLlz52rFihW688471aVLFxUUFGj+/Pm66qqrdNddd+ntt99WaWlpne7zs88+0759+75Xnm3btklSxI0LjkZVr2F+fr7HSQDgWxS4AJpUWlqabr/9dr3xxht68cUXdeWVVyohIUHZ2dnKzMzUT3/6U82ePVt5eXmnvJ8FCxZowoQJ2rx58xlnqGoo48pt/bVu3VqSdODAAY+TAMC3KHABeMKyLDmOo8cee0xvvfWWHnzwQaWnp6u4uFiLFy/WzTffrAkTJmjp0qU6dOhQrXOLioq0Zs0affXVV7rtttu0YsUKj54FACASUeAC8FxVY9qf//xnLVmyRLfccovatm2rLVu2aObMmbrsssv00EMPacOGDTLGaPXq1bXOnzp1qp566imFQiGPngEAIJIwiwKAiFLVmHb33Xfr/fffV1ZWlrKzs7V69WqtXr1a5557ro4ePXrcea+++qq2bt2qmTNnqk2bNh4kR7QLBAKyWF0DiAlcwQUQkU7VmLZ///4TnrN+/XrdeuutNDwBQDNHgQsg4tVsTLv00ktPeWxBQYF+/vOf6913322idACASEOBC6BeXNe1AoFAkzxWaWmp6vJYR48e1f33368//elPCofDTZAMABBJKHABRI13331Xhw8frvPxL730kiZOnKiSkpJGTFU3mzZtkuM4ysrK0siRIzVnzhxJFUX7k08+qREjRmjIkCF68MEHaz3HcDishQsXasyYMRowYICuuOIKbdmyRXfddZceffTRWo9x5513avbs2U35tGKK4ziybdt4nQNA/VHgAogab7zxxhmfs3nzZt1www3atWtXIyQ6cx999JGWL1+uKVOmSJKmT5+uTz/9VIsXL9aKFSt04MABPfXUU9XHP/PMM1q2bJmmTZumDz/8UPPmzVPbtm01ZswYrV27VmVlZZKkr7/+Whs2bNC1117ryfMCgEjCLAoAooIxRhMnTtT48eNVUlJy2n+HDh3S3r17JUl79+7VrbfeqieeeEIDBw709Hncdttt1QtMHDhwQKtWrdKrr76qtLQ0SdKECRP0wAMPaOrUqTp06JCWLFmi559/Xv369ZMk9ejRQ5LUvn17Pf7448rOztawYcP01ltvqU+fPurZs6c3TwwAIggFLoB6sW3bOI5Tp7Gx9WFZ1vcuTktLS3XkyBF98803Msbbb6C7dOlSfXvv3r0yxuimm2467riysjIVFBQoFArp/PPPP25/QkKCLrvsMv3zn//UsGHDtHr1av3sZz9r1OwAEC0ocAGPtWrV6kcXXHBBduWPpry8fN/BgweX79ix439JKvIi06nGIbqua1Vldl33rKbMVdOmTZs0ceJE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3G43W7du5ZlnnuH666/3bi8pKeH+++8nPT2dIUOG8I9//MPnfevXr2f58uVMnDiRvLw85syZw8yZM/n0008ZMWKE97iZM2eyfft2lixZwooVKzhw4ADz5s07oxoXLVoEQEZGBg6H45TboWJu4IULF/L++++zf/9+5syZc0afKSJSH2mhBxGRU0hJScFms9GhQweuu+46xowZ4903dOhQjhw5Qk5ODlFRUeTn51NeXu7dP27cOO+sDSUlJRiGwd69e+nXrx+JiYkAHDhwgFWrVrF48WJiYmIAuPHGG5k2bZpPv29KSso5v7bbbruN6OhooGKkd8aMGef8M0RE6poCrojIKaSnpxMREVHtvgULFpCWlkbv3r0JCwsD8OnPbd++vfd5TEwMM2bM4KmnnuL1119n2rRpJCUlsXfvXizLYuzYscedv6ys7IR1bN682dt+cLYuuOAC7/NWrVpx6NAh3G63lt0VkYCmgCsicpby8vJYtGgRS5cuJTY2loyMDD766COfYwzD8Hk9YsQIhg8fzvz585k8eTKrV6/2jqCuXLmS1q1b11n9AAcPHvSG5u+++44LLrig0YZbh8OBcez/YSISkBrnTzERkXPA04qwZ88eiouLefPNN096/J49e9i0aROGYdChQwdKS0uxLIuYmBhM02Tu3LkUFBTgcrnYsWMHGzZsOKN6mjZtCsCmTZsoLi4+5XaAp59+mpKSEr777jteeuklrrrqqjP6TBGR+kgjuCIiZ6lz586MGTOGSZMmccEFFzBmzBjWrVt3wuNdLhcPP/ww+fn5tGvXjpkzZ3pHeB999FFmz57N6NGjKSsrIzY2lrvvvvuM6unUqRPXXnstd999N1FRUaxevfqk2wF69+7NqFGjOHr0KCNGjODmm28+i6+EiEj9EtB/ijFN0wKOuytYAo9n6iKn0xnQ/002VpZlWf6u4XR4/jvTz4xf+3dP1l98uhrS11UtCrVHv7Mbj1tuuQWHw4HNZhualZW1xh81qEVBRESEiqDuCWEiEtgUcEVERESkQVEProhII9SrVy/9qVhEGiyN4IpIjZimaVVdFlZERMTfFHBFREREpEFRwBURqSWbN2/Gbrdz6NChareXlpbW2mfWxrlFRAKFAq6IiIiINCgKuCIiIiLSoCjgioj4WWlpKY899hhDhw5l0KBB3HfffRw8eNC7f8OGDdxw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5cuXAxAaGkq3bt18Qm/nzp3PyVzBItJ4KeCKiJymEy3sAKd/Z3hBQQFPP/00GRkZ/Pzzz0RERDB27FgmTpx4rsqsF2w2G126dKFLly5ceeWVQMUKazt37vQG3uzsbHbt2uV97hEZGUn37t3p2bMnCQkJJCYmaolhETkjCrgiUiOmaVp2u71RTP3jucbNmzczfvx4MjIyCA0NPe33l5eXc/PNNzN06FDeeustmjVrxg8//MDu3btrq+R6JSQkhISEBBISEhg9ejQAhw4dYtu2bT6tDbt378bhcPj8NxUdHe0zypuYmEjz5s39dSkiUs8p4IqI1JGcnBzy8/P54x//6J1hwDPK2VhFRERgt9t9RscPHDjgM8q7detWCgsLSU9PJz09Hai4ia1t27Y+obd79+66iU1EAAVcEZFzpqysjH/961+sWrWKffv20aJFC6655homTJiAzWajTZs2hIeHM3/+fCZPnlxtGCum3UpyAAAgAElEQVQtLeXJJ5/kgw8+oKysjMGDB3PfffcRFRXlHTmePn06Tz75JJdffjn33nsvd9xxBy1btuTBBx/0nuf222+nS5cuTJo06azO6U/nn38+AwcOZODAgd5tu3fv9gm927ZtIz8/n/z8fD7++GPg17aIqq0N3bp1864uJyKNh77rRUTOkUceeYStW7fy+OOPExsby9atW5k6dSrl5eXcdtttNG3alEcffZS///3vfPHFF9xwww2MGTPGJ+jOnDmTvLw8lixZQlhYGNOmTWPevHlMnz7de8z69etZvny5d1nekSNHMmvWLMrKyggJCeGnn34iMzOTv/71r2d9zvqmbdu2tG3bluHDhwMVN7Ht2rXLp7Vh586d5OTkkJOTw/vvvw9U3MQWHx/vE3o7deqEFiwTadgUcEVEzoGioiJWrFjBiy++SHx8PAC9e/dm4sSJLFiwgNtuuw2AQYMG8f777/PGG2/w6quvsmzZMp588kni4+M5cOAAq1atYvHixcTExABw4403Mm3aNJ8wOm7cOCIjI72vhwwZwqxZs8jIyGDw4MF89NFH9OrVi7i4uLM+Z31ns9mIi4sjLi6Oq666CqgY/d65c6dPa8O3337Lli1b2LJli/e9UVFR3l5gT4uD52sjIg2DAq6IyDmwZ88eLMsiNjbWZ3vHjh0pLCzE7XZ7p74677zzmDhxIjfccANTp07l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","width":696,"y":287,"x":71},"elements":{"page":{"showGrid":true,"gridSize":15,"orientation":"portrait","height":1120,"backgroundColor":"transparent","width":1050,"padding":20},"elements":{"1631202a5b39db":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":"ConnectToServer"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"1631202a65730b","category":"default","name":"no.","value":"","type":"number"},{"id":"1631202a657c9e","category":"default","name":"name","value":"","type":"string"},{"id":"1631202a657023","category":"default","name":"owner","value":"","type":"string"},{"id":"1631202a6572c5","category":"default","name":"link","value":"","type":"link"},{"id":"1631202a657b4f","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1631202a5b39db","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"Round Rectangle","name":"roundRectangle","fillStyle":{},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":83.5,"y":688.6000061035156,"h":32,"angle":0,"x":382.09999084472656,"zindex":11}},"1631202a0aa873":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":"recv"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"1631202a26a76","category":"default","name":"no.","value":"","type":"number"},{"id":"1631202a26a2a6","category":"default","name":"name","value":"","type":"string"},{"id":"1631202a26a839","category":"default","name":"owner","value":"","type":"string"},{"id":"1631202a26a21a","category":"default","name":"link","value":"","type":"link"},{"id":"1631202a26a9e7","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1631202a0aa873","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"Round Rectangle","name":"roundRectangle","fillStyle":{},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":83.5,"y":582.6000061035156,"h":26,"angle":0,"x":382.09999084472656,"zindex":6}},"16312016d3cb3a":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":"scoket"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"16312016d3cc5b","category":"default","name":"no.","value":"","type":"number"},{"id":"16312016d3cd44","category":"default","name":"name","value":"","type":"string"},{"id":"16312016d3c8eb","category":"default","name":"owner","value":"","type":"string"},{"id":"16312016d3c5f9","category":"default","name":"link","value":"","type":"link"},{"id":"16312016d3c65b","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"16312016d3cb3a","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"Round Rectangle","name":"roundRectangle","fillStyle":{},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":83.5,"y":380.6000061035156,"h":26,"angle":0,"x":382.09999084472656,"zindex":4}},"163120399091d4":{"id":"163120399091d4","to":{"id":"1631202a434ffa","y":525.6000061035156,"angle":1.5707963267948968,"x":423.84999084472656},"text":"","linkerType":"broken","name":"linker","lineStyle":{},"points":[{"y":514.1000061035156,"x":423.84999084472656},{"y":514.1000061035156,"x":423.84999084472656}],"locked":false,"dataAttributes":[],"from":{"id":"1631202a37782f","y":502.6000061035156,"angle":4.71238898038469,"x":423.84999084472656},"group":"","props":{"zindex":18}},"163120939f4d88":{"id":"163120939f4d88","to":{"id":"1631202a86c282","y":887.6000061035156,"angle":1.5707963267948966,"x":423.84999084472656},"text":"","linkerType":"broken","name":"linker","lineStyle":{},"points":[{"y":876.6000061035156,"x":423.84999084472656},{"y":876.6000061035156,"x":423.84999084472656}],"locked":false,"dataAttributes":[],"from":{"id":"1631202a7362b7","y":865.6000061035156,"angle":4.71238898038469,"x":423.84999084472656},"group":"","props":{"zindex":26}},"16312036daf68a":{"id":"16312036daf68a","to":{"id":"16312029a7527e","y":427.6000061035156,"angle":1.5707963267948968,"x":423.84999084472656},"text":"","linkerType":"broken","name":"linker","lineStyle":{},"points":[{"y":417.1000061035156,"x":423.84999084472656},{"y":417.1000061035156,"x":423.84999084472656}],"locked":false,"dataAttributes":[],"from":{"id":"16312016d3cb3a","y":406.6000061035156,"angle":4.71238898038469,"x":423.84999084472656},"group":"","props":{"zindex":16}},"16312029a7527e":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":"blind"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"1631202a099c39","category":"default","name":"no.","value":"","type":"number"},{"id":"1631202a09956c","category":"default","name":"name","value":"","type":"string"},{"id":"1631202a09938a","category":"default","name":"owner","value":"","type":"string"},{"id":"1631202a09982f","category":"default","name":"link","value":"","type":"link"},{"id":"1631202a099d5d","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"16312029a7527e","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"title":"Round Rectangle","category":"basic","name":"roundRectangle","path":[{"actions":[{"action":"move","y":"4","x":"0"},{"y1":"0","action":"quadraticCurve","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"y1":"0","action":"quadraticCurve","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"y1":"h","action":"quadraticCurve","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"y1":"h","action":"quadraticCurve","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":83.5,"angle":0,"h":26,"y":427.6000061035156,"zindex":5,"x":382.09999084472656}},"1631202a86c282":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":"closescoket"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"1631202a8fb2f5","category":"default","name":"no.","value":"","type":"number"},{"id":"1631202a8fb113","category":"default","name":"name","value":"","type":"string"},{"id":"1631202a8fb369","category":"default","name":"owner","value":"","type":"string"},{"id":"1631202a8fb5ac","category":"default","name":"link","value":"","type":"link"},{"id":"1631202a8fb6c6","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1631202a86c282","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"title":"Round Rectangle","category":"basic","name":"roundRectangle","path":[{"actions":[{"action":"move","y":"4","x":"0"},{"y1":"0","action":"quadraticCurve","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"y1":"0","action":"quadraticCurve","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"y1":"h","action":"quadraticCurve","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"y1":"h","action":"quadraticCurve","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":83.5,"angle":0,"h":33.000030517578125,"y":887.6000061035156,"zindex":15,"x":382.09999084472656}},"163121336d2c86":{"to":{"y":803.5849710490583,"x":466.8659265347036},"id":"163121336d2c86","linkerType":"normal","text":"","lineStyle":{"endArrowStyle":"solidArrow","beginArrowStyle":"none"},"name":"linker","from":{"y":831.6000061035156,"x":606.5999908447266},"dataAttributes":[],"locked":false,"points":[],"group":"","props":{"zindex":35}},"16312091c37b32":{"id":"16312091c37b32","to":{"id":"1631202a7362b7","y":839.6000061035156,"angle":1.5707963267948966,"x":423.84999084472656},"text":"","linkerType":"broken","name":"linker","lineStyle":{},"points":[{"y":829.6000061035156,"x":423.84999084472656},{"y":829.6000061035156,"x":423.84999084472656}],"locked":false,"dataAttributes":[],"from":{"id":"1631202a665129","y":819.6000061035156,"angle":4.71238898038469,"x":423.84999084472656},"group":"","props":{"zindex":25}},"1631211e631684":{"id":"1631211e631684","to":{"id":"1631200673026d","y":502.6000061035156,"angle":3.141592653589793,"x":225.59999084472656},"text":"","linkerType":"normal","name":"linker","lineStyle":{"endArrowStyle":"solidArrow","beginArrowStyle":"none"},"points":[],"locked":false,"dataAttributes":[],"from":{"y":551.6000061035156,"x":362.59999084472656},"group":"","props":{"zindex":31}},"16312038558cae":{"to":{"id":"1631202a37782f","angle":1.5707963267948968,"y":476.6000061035156,"x":423.84999084472656},"id":"16312038558cae","linkerType":"broken","text":"","lineStyle":{},"name":"linker","from":{"id":"16312029a7527e","angle":4.71238898038469,"y":453.6000061035156,"x":423.84999084472656},"dataAttributes":[],"locked":false,"points":[{"y":465.1000061035156,"x":423.84999084472656},{"y":465.1000061035156,"x":423.84999084472656}],"group":"","props":{"zindex":17}},"1631202a37782f":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":"listen"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"1631202a427b31","category":"default","name":"no.","value":"","type":"number"},{"id":"1631202a427dd7","category":"default","name":"name","value":"","type":"string"},{"id":"1631202a427fa1","category":"default","name":"owner","value":"","type":"string"},{"id":"1631202a4271b5","category":"default","name":"link","value":"","type":"link"},{"id":"1631202a427218","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1631202a37782f","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"Round Rectangle","name":"roundRectangle","fillStyle":{},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":83.5,"y":476.6000061035156,"h":26,"angle":0,"x":382.09999084472656,"zindex":8}},"163121384cee28":{"id":"163121384cee28","to":{"y":804.6000061035156,"x":235.59999084472656},"text":"","linkerType":"normal","name":"linker","lineStyle":{"endArrowStyle":"solidArrow","beginArrowStyle":"none"},"points":[],"locked":false,"dataAttributes":[],"from":{"y":853.6000061035156,"x":372.59999084472656},"group":"","props":{"zindex":36}},"163121140e4671":{"id":"163121140e4671","to":{"y":532.6000061035156,"x":368.59999084472656},"text":"","linkerType":"normal","name":"linker","lineStyle":{"endArrowStyle":"solidArrow","beginArrowStyle":"none"},"points":[],"locked":false,"dataAttributes":[],"from":{"id":"1631200673026d","angle":3.1415926535897927,"y":477.6000061035156,"x":225.59999084472656},"group":"","props":{"zindex":30}},"163120138be875":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":"目标服务器"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"16312013a72d62","category":"default","name":"no.","value":"","type":"number"},{"id":"16312013a72cc4","category":"default","name":"name","value":"","type":"string"},{"id":"16312013a720fa","category":"default","name":"owner","value":"","type":"string"},{"id":"16312013a72435","category":"default","name":"link","value":"","type":"link"},{"id":"16312013a72e7c","category":"default","name":"memo","value":"","type":"string"},{"id":"16312013a72e35","category":"default","name":"cost","value":"","type":"number"},{"id":"16312013a726dd","category":"default","name":"time","value":"","type":"number"},{"id":"16312013a72b6","category":"default","name":"department","value":"","type":"string"},{"id":"16312013a722b4","category":"default","name":"input","value":"","type":"string"},{"id":"16312013a729e4","category":"default","name":"output","value":"","type":"string"},{"id":"16312013a72e","category":"default","name":"risk","value":"","type":"string"},{"id":"16312013a7262e","category":"default","name":"remarks","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"163120138be875","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"flow","title":"Process","name":"process","fillStyle":{},"path":[{"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":123.25,"y":366.6000061035156,"h":508,"angle":0,"x":604.3499908447266,"zindex":3}},"163120760bd6a7":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":""}],"lineStyle":{"lineStyle":"dashed"},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"163120760bd791","category":"default","name":"no.","value":"","type":"number"},{"id":"163120760bd6f9","category":"default","name":"name","value":"","type":"string"},{"id":"163120760bd5dc","category":"default","name":"owner","value":"","type":"string"},{"id":"163120760bd5ce","category":"default","name":"link","value":"","type":"link"},{"id":"163120760bdb5","category":"default","name":"memo","value":"","type":"string"},{"id":"163120760bd8ce","category":"default","name":"cost","value":"","type":"number"},{"id":"163120760bd3ed","category":"default","name":"time","value":"","type":"number"},{"id":"163120760bdd99","category":"default","name":"department","value":"","type":"string"},{"id":"163120760bdc1d","category":"default","name":"input","value":"","type":"string"},{"id":"163120760bd042","category":"default","name":"output","value":"","type":"string"},{"id":"163120760bd232","category":"default","name":"risk","value":"","type":"string"},{"id":"163120760bdb29","category":"default","name":"remarks","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"163120760bd6a7","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"title":"Process","category":"flow","name":"process","path":[{"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":179,"angle":0,"h":140.5,"y":374.1000061035156,"zindex":0,"x":337.34999084472656}},"1631200673026d":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":"客户端"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"16312006730942","category":"default","name":"no.","value":"","type":"number"},{"id":"163120067302ba","category":"default","name":"name","value":"","type":"string"},{"id":"1631200673006e","category":"default","name":"owner","value":"","type":"string"},{"id":"1631200673046f","category":"default","name":"link","value":"","type":"link"},{"id":"163120067302b5","category":"default","name":"memo","value":"","type":"string"},{"id":"163120067304bd","category":"default","name":"cost","value":"","type":"number"},{"id":"163120067308b3","category":"default","name":"time","value":"","type":"number"},{"id":"16312006730c74","category":"default","name":"department","value":"","type":"string"},{"id":"16312006730d15","category":"default","name":"input","value":"","type":"string"},{"id":"16312006730f99","category":"default","name":"output","value":"","type":"string"},{"id":"16312006730e8e","category":"default","name":"risk","value":"","type":"string"},{"id":"1631200673060d","category":"default","name":"remarks","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1631200673026d","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"title":"Process","category":"flow","name":"process","path":[{"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":115,"angle":0,"h":512,"y":364.6000061035156,"zindex":1,"x":111.59999084472656}},"16312085d9668f":{"textBlock":[{"position":{"w":"w","y":0,"h":"h","x":0},"text":"InitSocket"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"16312085d98e75","category":"default","name":"no.","value":"","type":"number"},{"id":"16312085d9893","category":"default","name":"name","value":"","type":"string"},{"id":"16312085d98a7","category":"default","name":"owner","value":"","type":"string"},{"id":"16312085d98d86","category":"default","name":"link","value":"","type":"link"},{"id":"16312085d98bb3","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"16312085d9668f","anchors":[],"category":"basic","title":"Text","name":"text","fillStyle":{},"path":[{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":104,"y":394.1000061035156,"h":28,"angle":0,"x":274.59999084472656,"zindex":19}},"1631208ed82ddb":{"to":{"id":"1631202a278a02","angle":1.5707963267948968,"y":633.6000061035156,"x":423.84999084472656},"id":"1631208ed82ddb","linkerType":"broken","text":"","lineStyle":{},"name":"linker","from":{"id":"1631202a0aa873","angle":4.71238898038469,"y":608.6000061035156,"x":423.84999084472656},"dataAttributes":[],"locked":false,"points":[{"y":621.1000061035156,"x":423.84999084472656},{"y":621.1000061035156,"x":423.84999084472656}],"group":"","props":{"zindex":21}},"1631208e69ee44":{"id":"1631208e69ee44","to":{"id":"1631202a0aa873","y":582.6000061035156,"angle":1.5707963267948968,"x":423.84999084472656},"text":"","linkerType":"broken","name":"linker","lineStyle":{},"points":[{"y":567.1000061035156,"x":423.84999084472656},{"y":567.1000061035156,"x":423.84999084472656}],"locked":false,"dataAttributes":[],"from":{"id":"1631202a434ffa","y":551.6000061035156,"angle":4.71238898038469,"x":423.84999084472656},"group":"","props":{"zindex":20}},"163120906128da":{"to":{"id":"1631202a5b39db","angle":1.5707963267948968,"y":688.6000061035156,"x":423.84999084472656},"id":"163120906128da","linkerType":"broken","text":"","lineStyle":{},"name":"linker","from":{"id":"1631202a278a02","angle":4.71238898038469,"y":669.6000061035156,"x":423.84999084472656},"dataAttributes":[],"locked":false,"points":[{"y":679.1000061035156,"x":423.84999084472656},{"y":679.1000061035156,"x":423.84999084472656}],"group":"","props":{"zindex":22}},"1631202a278a02":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":"ParseHttpHead"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"1631202a36dafd","category":"default","name":"no.","value":"","type":"number"},{"id":"1631202a36d78a","category":"default","name":"name","value":"","type":"string"},{"id":"1631202a36db8a","category":"default","name":"owner","value":"","type":"string"},{"id":"1631202a36de12","category":"default","name":"link","value":"","type":"link"},{"id":"1631202a36d452","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1631202a278a02","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"Round Rectangle","name":"roundRectangle","fillStyle":{},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":86,"y":633.6000061035156,"h":36,"angle":0,"x":380.84999084472656,"zindex":7}},"1631212a74428f":{"to":{"y":595.6000061035156,"x":377.59999084472656},"id":"1631212a74428f","linkerType":"normal","text":"","lineStyle":{"endArrowStyle":"solidArrow","beginArrowStyle":"none"},"name":"linker","from":{"y":540.6000061035156,"x":234.59999084472656},"dataAttributes":[],"locked":false,"points":[],"group":"","props":{"zindex":33}},"163120e3a54c6c":{"to":{"y":327.6000061035156,"x":423.84999084472656},"id":"163120e3a54c6c","linkerType":"broken","text":"","lineStyle":{"endArrowStyle":"none","beginArrowStyle":"solidArrow"},"name":"linker","from":{"id":"16312016d3cb3a","angle":1.5707963267948968,"y":380.6000061035156,"x":423.84999084472656},"dataAttributes":[],"locked":false,"points":[{"y":354.1000061035156,"x":423.84999084472656},{"y":354.1000061035156,"x":423.84999084472656}],"group":"","props":{"zindex":28}},"1631202a665129":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":"recv"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"1631202a72348d","category":"default","name":"no.","value":"","type":"number"},{"id":"1631202a723323","category":"default","name":"name","value":"","type":"string"},{"id":"1631202a72360f","category":"default","name":"owner","value":"","type":"string"},{"id":"1631202a72378c","category":"default","name":"link","value":"","type":"link"},{"id":"1631202a72372f","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1631202a665129","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"Round Rectangle","name":"roundRectangle","fillStyle":{},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":83.5,"y":793.6000061035156,"h":26,"angle":0,"x":382.09999084472656,"zindex":12}},"1631202a434ffa":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":"accept"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"1631202a4f252f","category":"default","name":"no.","value":"","type":"number"},{"id":"1631202a4f2c1d","category":"default","name":"name","value":"","type":"string"},{"id":"1631202a4f2eac","category":"default","name":"owner","value":"","type":"string"},{"id":"1631202a4f27b6","category":"default","name":"link","value":"","type":"link"},{"id":"1631202a4f2ad9","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1631202a434ffa","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"Round Rectangle","name":"roundRectangle","fillStyle":{},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":83.5,"y":525.6000061035156,"h":26,"angle":0,"x":382.09999084472656,"zindex":9}},"163120916fc56":{"id":"163120916fc56","to":{"id":"1631202a665129","y":793.6000061035156,"angle":1.5707963267948966,"x":423.84999084472656},"text":"","linkerType":"broken","name":"linker","lineStyle":{},"points":[{"y":781.1000061035156,"x":423.84999084472656},{"y":781.1000061035156,"x":423.84999084472656}],"locked":false,"dataAttributes":[],"from":{"id":"1631202a4fb558","y":768.6000061035156,"angle":4.71238898038469,"x":423.84999084472656},"group":"","props":{"zindex":24}},"1631202a7362b7":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":"send"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"1631202a7ba2e8","category":"default","name":"no.","value":"","type":"number"},{"id":"1631202a7ba8f7","category":"default","name":"name","value":"","type":"string"},{"id":"1631202a7ba84d","category":"default","name":"owner","value":"","type":"string"},{"id":"1631202a7ba3f5","category":"default","name":"link","value":"","type":"link"},{"id":"1631202a7ba9d","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1631202a7362b7","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"Round Rectangle","name":"roundRectangle","fillStyle":{},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":83.5,"y":839.6000061035156,"h":26,"angle":0,"x":382.09999084472656,"zindex":13}},"16312124b4a4e7":{"to":{"id":"1631202a5b39db","angle":3.752457891787808,"y":718.5849710490583,"x":464.8659265347036},"id":"16312124b4a4e7","linkerType":"normal","text":"","lineStyle":{"endArrowStyle":"solidArrow","beginArrowStyle":"none"},"name":"linker","from":{"id":"163120138be875","angle":0,"y":746.6000061035156,"x":604.5999908447266},"dataAttributes":[],"locked":false,"points":[],"group":"","props":{"zindex":32}},"16312090cfba42":{"id":"16312090cfba42","to":{"id":"1631202a4fb558","y":742.6000061035156,"angle":1.5707963267948968,"x":423.84999084472656},"text":"","linkerType":"broken","name":"linker","lineStyle":{},"points":[{"y":731.6000061035156,"x":423.84999084472656},{"y":731.6000061035156,"x":423.84999084472656}],"locked":false,"dataAttributes":[],"from":{"id":"1631202a5b39db","y":720.6000061035156,"angle":4.71238898038469,"x":423.84999084472656},"group":"","props":{"zindex":23}},"163120da9c6d7b":{"textBlock":[{"position":{"w":"w","h":"h","y":0,"x":0},"text":"ProxyThread "}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"163120da9c816","category":"default","name":"no.","value":"","type":"number"},{"id":"163120da9c8ca8","category":"default","name":"name","value":"","type":"string"},{"id":"163120da9c892f","category":"default","name":"owner","value":"","type":"string"},{"id":"163120da9c8696","category":"default","name":"link","value":"","type":"link"},{"id":"163120da9c8dec","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"163120da9c6d7b","anchors":[],"title":"Text","category":"basic","name":"text","path":[{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":160,"angle":0,"h":40,"y":582.6000061035156,"zindex":27,"x":249.09999084472656}},"1631202a4fb558":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":"send"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"1631202a59b06d","category":"default","name":"no.","value":"","type":"number"},{"id":"1631202a59b3cb","category":"default","name":"name","value":"","type":"string"},{"id":"1631202a59b9bc","category":"default","name":"owner","value":"","type":"string"},{"id":"1631202a59ba4e","category":"default","name":"link","value":"","type":"link"},{"id":"1631202a59b228","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1631202a4fb558","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"Round Rectangle","name":"roundRectangle","fillStyle":{},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":83.5,"y":742.6000061035156,"h":26,"angle":0,"x":382.09999084472656,"zindex":10}},"1631210eae9321":{"id":"1631210eae9321","to":{"id":"163120138be875","y":733.6000061035156,"angle":0,"x":604.5999908447266},"text":"","linkerType":"normal","name":"linker","lineStyle":{"endArrowStyle":"solidArrow","beginArrowStyle":"none"},"points":[],"locked":false,"dataAttributes":[],"from":{"id":"1631202a5b39db","y":704.6000061035156,"angle":3.141592653589793,"x":465.59999084472656},"group":"","props":{"zindex":29}},"16312097a965d6":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":""}],"lineStyle":{"lineStyle":"dashed"},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"16312097debc75","category":"default","name":"no.","value":"","type":"number"},{"id":"16312097debf35","category":"default","name":"name","value":"","type":"string"},{"id":"16312097deba88","category":"default","name":"owner","value":"","type":"string"},{"id":"16312097deb921","category":"default","name":"link","value":"","type":"link"},{"id":"16312097deb716","category":"default","name":"memo","value":"","type":"string"},{"id":"16312097deb08c","category":"default","name":"cost","value":"","type":"number"},{"id":"16312097debae4","category":"default","name":"time","value":"","type":"number"},{"id":"16312097deb5fc","category":"default","name":"department","value":"","type":"string"},{"id":"16312097debc1a","category":"default","name":"input","value":"","type":"string"},{"id":"16312097deb0f2","category":"default","name":"output","value":"","type":"string"},{"id":"16312097deb56a","category":"default","name":"risk","value":"","type":"string"},{"id":"16312097deb6d3","category":"default","name":"remarks","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"16312097a965d6","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"title":"Process","category":"flow","name":"process","path":[{"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":179,"angle":0,"h":312,"y":562.6000061035156,"zindex":-2,"x":337.34999084472656}},"163121318fd344":{"to":{"y":781.6000061035156,"x":603.5999908447266},"id":"163121318fd344","linkerType":"normal","text":"","lineStyle":{"endArrowStyle":"solidArrow","beginArrowStyle":"none"},"name":"linker","from":{"y":752.6000061035156,"x":464.59999084472656},"dataAttributes":[],"locked":false,"points":[],"group":"","props":{"zindex":34}}}}},"meta":{"id":"5ae5e353e4b0411f64d98350","member":"59f53ab5e4b0f84f89741385","exportTime":"2018-04-29 23:45:29","diagramInfo":{"category":"flow","title":"Untitled Diagram","created":"2018-04-29 23:22:59","creator":"59f53ab5e4b0f84f89741385","modified":"2018-04-29 23:44:50"},"type":"ProcessOn Schema File","version":"1.0"}} -------------------------------------------------------------------------------- /实验一 HTTP代理服务器/yan.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/实验一 HTTP代理服务器/yan.cpp -------------------------------------------------------------------------------- /实验一 HTTP代理服务器/实验 1:HTTP代理服务器的设计与实现.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/实验一 HTTP代理服务器/实验 1:HTTP代理服务器的设计与实现.pdf -------------------------------------------------------------------------------- /实验一 HTTP代理服务器/实验1_计算机网络2018.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/实验一 HTTP代理服务器/实验1_计算机网络2018.doc -------------------------------------------------------------------------------- /实验三 IPv4分组收发实验/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/实验三 IPv4分组收发实验/.DS_Store -------------------------------------------------------------------------------- /实验三 IPv4分组收发实验/ipv4.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * THIS FILE IS FOR IP TEST 3 | */ 4 | // system support 5 | #include "sysInclude.h" 6 | 7 | extern void ip_DiscardPkt(char* pBuffer,int type); 8 | 9 | extern void ip_SendtoLower(char*pBuffer,int length); 10 | 11 | extern void ip_SendtoUp(char *pBuffer,int length); 12 | 13 | extern unsigned int getIpv4Address(); 14 | 15 | // implemented by students 16 | 17 | struct Ipv4 18 | { 19 | char version_ihl; 20 | char type_of_service; 21 | short total_length; 22 | short identification; 23 | short fragment_offset; 24 | char time_to_live; 25 | char protocol; 26 | short header_checksum; 27 | unsigned int source_address; 28 | unsigned int destination_address; 29 | Ipv4() { 30 | memset(this,0,sizeof(Ipv4)); 31 | } 32 | Ipv4(unsigned int len,unsigned int srcAddr,unsigned int dstAddr, 33 | byte _protocol,byte ttl) { 34 | memset(this,0,sizeof(Ipv4)); 35 | version_ihl = 0x45; 36 | total_length = htons(len+20); 37 | time_to_live = ttl; 38 | protocol = _protocol; 39 | source_address = htonl(srcAddr); 40 | destination_address = htonl(dstAddr); 41 | 42 | char *pBuffer; 43 | memcpy(pBuffer,this,sizeof(Ipv4)); 44 | int sum = 0; 45 | for(int i = 0; i < 10; i++) { 46 | if(i != 5) { 47 | sum += (int)((unsigned char)pBuffer[i*2] << 8); 48 | sum += (int)((unsigned char)pBuffer[i*2+1]); 49 | } 50 | } 51 | while((sum & 0xffff0000) != 0) { 52 | sum = (sum & 0xffff) + ((sum >> 16) & 0xffff); 53 | } 54 | unsigned short int ssum = sum; 55 | header_checksum = htons(~ssum); 56 | } 57 | }; 58 | 59 | int stud_ip_recv(char *pBuffer,unsigned short length) 60 | { 61 | Ipv4 *ipv4 = new Ipv4(); 62 | *ipv4 = *(Ipv4*)pBuffer; 63 | int version = 0xf & ((ipv4->version_ihl)>> 4); 64 | if(version != 4) { 65 | ip_DiscardPkt(pBuffer,STUD_IP_TEST_VERSION_ERROR); 66 | return 1; 67 | } 68 | int ihl = 0xf & ipv4->version_ihl; 69 | if(ihl < 5) { 70 | ip_DiscardPkt(pBuffer,STUD_IP_TEST_HEADLEN_ERROR); 71 | return 1; 72 | } 73 | int ttl = (int)ipv4->time_to_live; 74 | if(ttl == 0) { 75 | ip_DiscardPkt(pBuffer,STUD_IP_TEST_TTL_ERROR); 76 | return 1; 77 | } 78 | int destination_address = ntohl(ipv4->destination_address); 79 | if(destination_address != getIpv4Address() && destination_address != 0xffffffff) { 80 | ip_DiscardPkt(pBuffer,STUD_IP_TEST_DESTINATION_ERROR); 81 | return 1; 82 | } 83 | int header_checksum = ntohs(ipv4->header_checksum); 84 | int sum = 0; 85 | for(int i = 0; i < ihl*2; i++) { 86 | if(i!=5) 87 | { 88 | sum += (int)((unsigned char)pBuffer[i*2] << 8); 89 | sum += (int)((unsigned char)pBuffer[i*2+1]); 90 | } 91 | } 92 | 93 | while((sum & 0xffff0000) != 0) { 94 | sum = (sum & 0xffff) + ((sum >> 16) & 0xffff); 95 | } 96 | unsigned short int ssum = (~sum) & 0xffff; 97 | if(ssum != header_checksum) { 98 | ip_DiscardPkt(pBuffer,STUD_IP_TEST_CHECKSUM_ERROR); 99 | return 1; 100 | } 101 | ip_SendtoUp(pBuffer,length); 102 | return 0; 103 | } 104 | 105 | int stud_ip_Upsend(char *pBuffer,unsigned short len,unsigned int srcAddr, 106 | unsigned int dstAddr,byte protocol,byte ttl) 107 | { 108 | char *pack_to_sent = new char[len+20]; 109 | memset(pack_to_sent,0,len+20); 110 | *((Ipv4*)pack_to_sent) = Ipv4(len,srcAddr,dstAddr,protocol,ttl); 111 | memcpy(pack_to_sent+20,pBuffer,len); 112 | ip_SendtoLower(pack_to_sent,len+20); 113 | delete[] pack_to_sent; 114 | 115 | return 0; 116 | } -------------------------------------------------------------------------------- /实验三 IPv4分组收发实验/~WRL0001.tmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/实验三 IPv4分组收发实验/~WRL0001.tmp -------------------------------------------------------------------------------- /实验三 IPv4分组收发实验/实验 4:IPv4分组收发实验.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/实验三 IPv4分组收发实验/实验 4:IPv4分组收发实验.pdf -------------------------------------------------------------------------------- /实验三 IPv4分组收发实验/实验3_计算机网络2018.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/实验三 IPv4分组收发实验/实验3_计算机网络2018.doc -------------------------------------------------------------------------------- /实验二 可靠数据传输协议/SR-客户端.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/实验二 可靠数据传输协议/SR-客户端.cpp -------------------------------------------------------------------------------- /实验二 可靠数据传输协议/SR-服务器端.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/实验二 可靠数据传输协议/SR-服务器端.cpp -------------------------------------------------------------------------------- /实验二 可靠数据传输协议/client.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/实验二 可靠数据传输协议/client.cpp -------------------------------------------------------------------------------- /实验二 可靠数据传输协议/server.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include "head.h" 10 | using namespace std; 11 | 12 | #pragma comment(lib,"ws2_32.lib") 13 | const int SERVER_PORT = 6666; //server port 14 | const int BUFFER_LENGTH = 1032; // 8byte header + 1024byte body, udp tot Buffer < 1480 15 | 16 | const int windowSize = 10; // W + 1 <= totSeqNumber if W = 1 then wait-stop protocol 17 | const int seqSize = 256; // if seq = 0, don't send 18 | bool inWindow[seqSize]; // seq is in window 19 | Header *window[seqSize]; // store the send data, for resend 20 | int lastNeedSeq; // last not ack seq 21 | int lastSendSeq; // last send seq 22 | 23 | bool seqIsAvailable () 24 | { 25 | if (lastSendSeq == -1) 26 | return true; 27 | int step; 28 | step = lastSendSeq - lastNeedSeq; 29 | step = step >= 0 ? step : step + seqSize; 30 | if (step +1 >= windowSize) 31 | return false; 32 | return true; 33 | } 34 | 35 | 36 | void ackHandler (int ack, int &ackBlock) 37 | { 38 | //printf("[Recv a ack of %d, lastseq=%d]\n", ack, lastNeedSeq); 39 | if (lastNeedSeq <= ack) 40 | { 41 | for(int i = lastNeedSeq; i <= ack; ++i) 42 | { 43 | inWindow[i] = false; 44 | delete window[i]; 45 | ackBlock++; 46 | } 47 | lastNeedSeq = (ack + 1) % seqSize; 48 | } 49 | else 50 | { 51 | for (int i = lastNeedSeq; i< seqSize; ++i) 52 | { 53 | inWindow[i] = false; 54 | delete window[i]; 55 | ackBlock++; 56 | } 57 | for (int i = 0; i <= ack; ++i) 58 | { 59 | inWindow[i] = false; 60 | delete window[i]; 61 | ackBlock++; 62 | } 63 | lastNeedSeq = ack + 1; 64 | } 65 | } 66 | 67 | 68 | int main(int argc, char* argv[]) 69 | { 70 | //freopen("serverOutput.txt","w",stdout); 71 | WORD wVersionRequested; 72 | WSADATA wsaData; 73 | int err; 74 | wVersionRequested = MAKEWORD(2, 2); 75 | err = WSAStartup(wVersionRequested, &wsaData); 76 | if (err != 0) 77 | { 78 | printf("WSAStartup failed with error: %d\n", err); 79 | return -1; 80 | } 81 | if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) 82 | { 83 | printf("Could not find a usable version of Winsock.dll\n"); 84 | WSACleanup(); 85 | } 86 | else 87 | { 88 | printf("The Winsock 2.2 dll was found okay\n"); 89 | } 90 | 91 | SOCKET sockServer = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); 92 | 93 | //no block 94 | int iMode = 1; 95 | ioctlsocket(sockServer, FIONBIO, (u_long FAR*) &iMode); 96 | 97 | SOCKADDR_IN addrServer; 98 | addrServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY); 99 | addrServer.sin_family = AF_INET; 100 | addrServer.sin_port = htons(SERVER_PORT); 101 | err = bind(sockServer, (SOCKADDR*)&addrServer, sizeof(SOCKADDR)); 102 | if (err) 103 | { 104 | err = GetLastError(); 105 | printf("Could not bind the port %d for socket.Error code is %d\n", 106 | SERVER_PORT, err); 107 | WSACleanup(); 108 | return -1; 109 | } 110 | 111 | SOCKADDR_IN addrClient; 112 | int length = sizeof(SOCKADDR); 113 | char recvBuffer[BUFFER_LENGTH]; 114 | 115 | char *sendBuffer; 116 | std::ifstream fin; 117 | fin.open("server.txt"); 118 | fin.seekg(0, ios::end); 119 | int fileSize = (int)fin.tellg(); 120 | cout << fileSize << " " << fin.tellg() << endl; 121 | fin.seekg(0, ios::beg); 122 | sendBuffer = new char[fileSize + 1]; 123 | fin.read(sendBuffer, fileSize); 124 | sendBuffer[fileSize] = 0; 125 | printf("FileSize=%d\n", fileSize); 126 | 127 | //printf("[send buffer]%s[/sendbuffer]\n",sendBuffer); 128 | int recvSize; 129 | while (1) 130 | { 131 | recvSize = recvfrom(sockServer, recvBuffer, BUFFER_LENGTH, 0, ((SOCKADDR*)&addrClient), &length); 132 | if (recvSize < 0) 133 | Sleep(200); 134 | else 135 | break; 136 | } 137 | 138 | printf("[recv from client]: %s\n", recvBuffer); 139 | if (strcmp(recvBuffer, "get") == 0) 140 | { 141 | int sendBase = 0; 142 | int sendSum = fileSize / 1024 + (fileSize % 1024 != 0); 143 | printf("[send sum=%d]\n", sendSum); 144 | int waitCount = 0; 145 | 146 | int sendNum = 0; 147 | int ackNum = 0; 148 | lastSendSeq = -1; 149 | lastNeedSeq = 0; 150 | 151 | for (int i = 0; i < seqSize; ++i) 152 | inWindow[i] = FALSE; 153 | 154 | while (ackNum < sendSum) 155 | { 156 | while (sendNum < sendSum && seqIsAvailable()) //send 157 | { 158 | lastSendSeq = (lastSendSeq + 1) % seqSize; 159 | //printf("[available sendSeq=%d]\n", lastSendSeq); 160 | inWindow[lastSendSeq] = true; 161 | window[lastSendSeq] = new Header(); 162 | Header *header = window[lastSendSeq]; 163 | printf("sendBase=%d, fileSize=%d\n", sendBase, fileSize); 164 | header->setType("SND0"); 165 | if (sendBase + 1024 >= fileSize) 166 | header->setType("SND1"); 167 | 168 | header->setSeq(lastSendSeq); 169 | int headerLength = 1024; 170 | if (fileSize - sendBase < headerLength) 171 | headerLength = fileSize - sendBase; 172 | printf("headerLength = %d\n", headerLength); 173 | printf("headerLength = %u\n", headerLength); 174 | memcpy(header->Buffer + 8, sendBuffer + sendBase, headerLength); 175 | sendBase += headerLength; 176 | 177 | headerLength += 8; 178 | 179 | header->setLength(headerLength); 180 | printf("headerLength = %d\n", headerLength); 181 | 182 | printf("[send a packet with a seq of %d]\n", lastSendSeq); 183 | header->show(); 184 | 185 | sendto(sockServer, header->Buffer, headerLength, 0, 186 | (SOCKADDR*)&addrClient, sizeof(SOCKADDR)); 187 | sendNum++; 188 | if (sendBase >= fileSize) 189 | break; 190 | Sleep(200); 191 | } 192 | 193 | recvSize = recvfrom(sockServer, recvBuffer, BUFFER_LENGTH, 0, ((SOCKADDR*)&addrClient), &length); 194 | if (recvSize < 0) 195 | { 196 | printf("[recv error] %d\n", WSAGetLastError()); 197 | waitCount++; 198 | if (waitCount > 10) 199 | { 200 | printf("\n[resend!!]"); 201 | if (lastSendSeq > lastNeedSeq) 202 | { 203 | for (int i = lastNeedSeq; i <= lastSendSeq; i++) 204 | { 205 | if (!inWindow[i]) 206 | break; 207 | printf("[resend seq] = %d\n", i); 208 | window[i]->show(); 209 | sendto(sockServer, window[i]->Buffer, window[i]->getLength(), 0, 210 | (SOCKADDR*)&addrClient, sizeof(SOCKADDR)); 211 | Sleep(200); 212 | } 213 | } 214 | else 215 | { 216 | for (int i = lastNeedSeq; i < windowSize; i++) 217 | { 218 | if (!inWindow[i]) 219 | break; 220 | printf("[resend seq] = %d\n", i); 221 | window[i]->show(); 222 | sendto(sockServer, window[i]->Buffer, window[i]->getLength(), 0, 223 | (SOCKADDR*)&addrClient, sizeof(SOCKADDR)); 224 | Sleep(200); 225 | } 226 | for (int i = 0; i <= lastSendSeq; i++) 227 | { 228 | if (!inWindow[i]) 229 | break; 230 | printf("[resend seq] = %d\n", i); 231 | window[i]->show(); 232 | sendto(sockServer, window[i]->Buffer, window[i]->getLength(), 0, 233 | (SOCKADDR*)&addrClient, sizeof(SOCKADDR)); 234 | Sleep(200); 235 | } 236 | } 237 | printf("\n"); 238 | waitCount = 0; 239 | } 240 | } 241 | else 242 | { 243 | Header header; 244 | memcpy(header.Buffer, recvBuffer, recvSize); 245 | //header.show(); 246 | int ack = header.getSeq(); 247 | 248 | printf("[recv ack, seq=%d]\n", ack); 249 | ackHandler(ack, ackNum); 250 | } 251 | Sleep(200); 252 | } 253 | } 254 | Sleep(200); 255 | closesocket(sockServer); 256 | WSACleanup(); 257 | return 0; 258 | } 259 | -------------------------------------------------------------------------------- /实验二 可靠数据传输协议/基于SR的双向数据传输-客户端.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/实验二 可靠数据传输协议/基于SR的双向数据传输-客户端.cpp -------------------------------------------------------------------------------- /实验二 可靠数据传输协议/基于SR的双向数据传输-服务器端.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/实验二 可靠数据传输协议/基于SR的双向数据传输-服务器端.cpp -------------------------------------------------------------------------------- /实验二 可靠数据传输协议/实验 2:可靠数据传输协议 -GBN协议的设计与实现.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/实验二 可靠数据传输协议/实验 2:可靠数据传输协议 -GBN协议的设计与实现.pdf -------------------------------------------------------------------------------- /实验二 可靠数据传输协议/实验2_计算机网络2018.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/实验二 可靠数据传输协议/实验2_计算机网络2018.doc -------------------------------------------------------------------------------- /实验四 IPv4分组转发实验/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/实验四 IPv4分组转发实验/.DS_Store -------------------------------------------------------------------------------- /实验四 IPv4分组转发实验/Untitled Diagram.pos: -------------------------------------------------------------------------------- 1 | {"diagram":{"image":{"height":742,"pngdata":"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P/ywTjE9TXXX+7TvOyGNKT4+/oFGo1FpNJphRkZGrwBYBuBGVlaWtHD9rFmzcPToURrLVU+NVdZvbW2N2bNnw8/PT/oAqiVijOHKlStYtWoV3nzzTXzxxReIi4uDKIplHMcd5ThufHFxcXuNRjM3JSUlRe54CSGEtAI8zzOe59mzkpqaynieZzdv3pS2xcfHM0EQmFarZXl5eUwQBPbrr79K7efOnWNDhgyR/n/t2jU2ePBgtmHDBjZr1iwmimKl8xcXF1fZr2677v88z7O+ffuy8ePHs3379umdqzGv98aNG9K2hIQE6Xqrizk/P58JgsBSUlL0znf06FE2YsQIveOqey517UVFRezKlSuM53l27949vWN///136diYmBg2ePBgvfZffvmlXjEVFRVVeg6efO4rXm9tvu+GpHttyP3zSAxK0bdv32FKpVLF83yR7jUwaNAg5ufnxxITE6WfWVKzur4XV3zP+PHHH1m/fv2k51ur1bLRo0ez6Ohow12AgeTk5LA9e/awSZMmSe87j79SeJ6fSwvcNw2CIBzheZ4JgkBjDJsBGmNISDNjbW0tPW7bti0YYygrK0NWVhYYY5g2bVqlY0pLS2FiYgJHR0e4ublh9+7d2L59O3RrkNWHoWYLtbW1lR5bWFhI12tqalrl/rdv3wZjDI6OjnrbO3XqhLy8PL1Pzqt7LitijyctePK5srP7398ctra2ePjwod65K67lVpeY6qqm77tCoUD//tKEkujfvz+2bNlS7/4IqYJ4/vz50wBOv/HGG5/++eefEwH4PHr0aGhUVBSioqLg4OAgrXPYsWNHmcNtGN2sxcHBwdiwYQOuX7+OTp06YdmyZejRoweA8pLG9evXIzo6GqWlpXBxccHChQthaWmJsLAwBAcH4+jRo7CyskJKSgo+/fRThIaGon379nol40DdZrp+sqxfoVBg+PDhiImJwVtvvdW4T4QMSkpKEBcXh4iICMTHx1d878wBsFcUxd10V5CQ+qPEkJAWol27dgCAY8eOwcHBocp9bt26hTNnzsDNzQ0hISHged4gsR08eBArVqyosu306dONusyFLpHMyMhAr169pO23bt2Cvb19ncdB2tjYACgfr1MxzsLCQikxzsjIgJ2dnd65KyaStYlJl+g+evRIOm9txgnW5vve0pZQIU1XfHz8AwAqACpnZ+cuxsbG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crKr/euvv65BgwbJNK9Ww8/KylL//v1VXl5e588EAAA0fiSGgB9KSEjQnj17XPe8FRQU6NChQxo1apQkKSkpSd9++61SU1O1detWFRUVacmSJa7Xv/LKK9qwYYPmz5+vAwcOaMWKFWrdunWN59q8ebPeeOMNbdq0Sfn5+a7ksz5nz57VokWLlJSUpN27dys+Pr7K/nXr1unVV1/Vrl27dNtttykpKcmt49YVT0lJiWbPnq39+/drwIABeumll66pz+vWrdOGDRu0atUqdezYUYWFhcrNzVWXLl2qtDt48KC2bNmi3//+95KkBQsWaM+ePXr55Zd14MABJScn69NPP9Xrr7/uVp8kac2aNZKk9PR02e121/a6fpa1xVehvrj69eunjIwMV/sDBw7oypUrys7OlnQ10e7VqxdTVAEAAIkh4I8GDBggSa4RsZ07d6pbt27q1KmTioqKtH37diUmJio8PFytW7fWo48+qt27d0uSfvjhB3300Uf685//rN/85jdq2rSpIiIi9LOf/azGc/3hD39QmzZt1L59e02cOFH79u1zK8ZmzZrJMAzl5eUpJCREXbtWvZ1k6tSpat++vUJDQzVu3DidPHnSNZJVl8rxPP7441XiiY2NVUREhE6ePKmWLVsqNzdX5eXlbvU5LS1NK1eu1PLly9WpUydJ0vfffy9JateuXZUYJkyYoBYtWqhly5a6cOGCtm7dqlmzZqlz585q2rSpunfvrt///vfasGGDW9eqNvX9LGuLT5JbcfXp00enT5/W+fPndeHCBX3//feKj493/V4dOnRIffv2vaE+AACAxoGviQE/1Lx5cw0ePFi7du1Sv379tGPHDj3yyCOSpLy8PJmmqXHjxlV7XVlZmXJzc+VwONy+J619+/aux+3atdPly5fdSuDCw8M1f/58LV26VGvXrtWMGTMUFRVV5VgVWrRoIdM0VV5erubNm7sdT/v27V3xWCwWLV++XJs3b1b37t110003Sbo6hdSdPi9dulRxcXFVEtiKKZWGYVRp+/Of/9z1+Ny5czJNUxEREVXa/OIXv1BhYaFb16o29f0sa4vP3bjCwsLUpUsXHTp0SE2aNFGfPn3Up08frV27VuPHj9c333zj9ggxAABo3BgxBPxUQkKC9u7dq+zsbJ05c8Z1n1mbNm0kSdu2bZPdbq/yr1mzZrr11lslye1CJ5XvZzt16pTat28vi8XiSuD+9a9/1dhWkuLj47VlyxZFR0fr+eefv/7O1hFPeHi4LBaLzp49qzVr1uj111/XkiVLNGzYMFc7d/qcnJysHTt2aP369a5tYWFXayMUFBRUaVs5EatIcE+dOlWlzdmzZ12xuXOtalLfz7K2+NyNS/r3dNIDBw4oNjZWPXr00IkTJ/TVV18pMjJSoaGh9cYJ4PpcvnxZr7zySo1L4Vy+fLnO5WcWLlwoh8NRZdt3332noUOH6ty5cw0SL4DgRmII+KmuXbuqQ4cOWrRokeLj410jZOHh4bJarVq8eLHOnz8vh8Oh7Oxs171k4eHh6tevnxYsWKDs7Gw5HA599913ys3NrfE8K1asUElJiU6dOqXVq1e7Eq4777xTISEh2rp1qyTpypUrev/9912vO3funI4cOSLDMNSxY0eVlpa6RrhuxE/jSUhIkCRXgZRz586puLhYH374oes17vT57rvvVkpKipYsWaLt27dLuppctW/fXsePH681nrCwMD3wwANasGCB/v73v8vhcOjYsWN67bXXNGHCBLeulSRXAnbkyBEVFxe74q7rZ1lXfO7EJUl9+/ZVZmamjh07ph49eujmm29W9+7d9c4776hfv37u/EgAXKcmTZro0KFDevHFF6/pdampqVq/fr1++9vf6vHHH9fjjz+u1NRUzZw5UxcvXlRiYqJr+9dff91A0QMINiSGgB9LSEhQZmamq+hMhZSUFFksFo0ZM0a9e/fW3LlzqyRlCxYsULdu3fT000+rT58+mjt3rq5cuaLz589r5MiRVaY/du/eXSNGjNBjjz2mmJgYPfnkk5Kkm266SQsWLNDHH3+shIQEPf300+rVq5frdQ6HQ/PmzVPv3r2VmpqqpKSkGqc8Xqtu3bpp+PDheuyxx9S7d29NnjxZ0tXka+zYsZo2bZomTJhQJZa6+lxZr169NHv2bL344ovas2ePJCkuLk5ffPFFnTHNmzdPNptNzzzzjGJiYvTnP/9ZEydO1NixYyXVf60k6Y477tCoUaM0depUjR492rW9vp9lXfHVF5ckRUZGyul0KjIy0jWy2adPH2VlZalv374qLCxUdHS0CgsL67wGAK7dTTfdpMWLF2vfvn367LPP6m3vdDr1P//zP0pNTdXHH3+su+66S2vWrNG7776rv/3tb7r77ru1d+9e/eY3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","width":902,"y":48,"x":107},"elements":{"page":{"showGrid":true,"gridSize":15,"orientation":"portrait","height":1000,"backgroundColor":"transparent","width":1050,"padding":20},"elements":{"1637889bc4c64e":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":"high = getHigh(dest, masklen)"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"1637889bd2c7e2","category":"default","name":"no.","value":"","type":"number"},{"id":"1637889bd2cd01","category":"default","name":"name","value":"","type":"string"},{"id":"1637889bd2c4ef","category":"default","name":"owner","value":"","type":"string"},{"id":"1637889bd2c08","category":"default","name":"link","value":"","type":"link"},{"id":"1637889bd2c03","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1637889bc4c64e","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"title":"Round Rectangle","category":"basic","name":"roundRectangle","path":[{"actions":[{"action":"move","y":"4","x":"0"},{"y1":"0","action":"quadraticCurve","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"y1":"0","action":"quadraticCurve","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"y1":"h","action":"quadraticCurve","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"y1":"h","action":"quadraticCurve","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":194,"angle":0,"h":42,"y":521,"zindex":6,"x":311}},"16378952edae33":{"to":{"id":"1637891f591b1b","angle":1.5707963267948968,"y":526,"x":712.5},"id":"16378952edae33","linkerType":"broken","text":"","lineStyle":{},"name":"linker","from":{"id":"16378915c2e4d6","angle":4.71238898038469,"y":477,"x":712.5},"dataAttributes":[],"locked":false,"points":[{"y":501.5,"x":712.5},{"y":501.5,"x":712.5}],"group":"","props":{"zindex":28}},"16378918030cc4":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":"fwd_DiscardPkt()"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"163789180307ff","category":"default","name":"no.","value":"","type":"number"},{"id":"16378918030c9","category":"default","name":"name","value":"","type":"string"},{"id":"16378918030b87","category":"default","name":"owner","value":"","type":"string"},{"id":"16378918030a65","category":"default","name":"link","value":"","type":"link"},{"id":"16378918030c24","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"16378918030cc4","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"Round Rectangle","name":"roundRectangle","fillStyle":{},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":148.875,"y":713,"h":37.5,"angle":0,"x":820.125,"zindex":20}},"163788e403adab":{"textBlock":[{"position":{"w":"w-20","h":"h*0.75","y":"h*0.13","x":"10"},"text":"destIP == 0xFFFFFFFF || destIP == localIP"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"163788e403a5a6","category":"default","name":"no.","value":"","type":"number"},{"id":"163788e403a6d4","category":"default","name":"name","value":"","type":"string"},{"id":"163788e403aa4a","category":"default","name":"owner","value":"","type":"string"},{"id":"163788e403a485","category":"default","name":"link","value":"","type":"link"},{"id":"163788e403a398","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"163788e403adab","anchors":[{"y":"h/2","x":"0"},{"y":"0","x":"w/2"},{"y":"h/2","x":"w"},{"y":"h","x":"w/2"}],"title":"Diamond","category":"basic","name":"diamond","path":[{"actions":[{"action":"move","y":"h/2","x":"0"},{"action":"line","y":"0","x":"w/2"},{"action":"line","y":"h/2","x":"w"},{"action":"line","y":"h","x":"w/2"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":163,"angle":0,"h":90,"y":183,"zindex":15,"x":631}},"1637889fb9647d":{"id":"1637889fb9647d","to":{"id":"1637889bddddf","y":345,"angle":1.5707963267948968,"x":408},"text":"","linkerType":"broken","name":"linker","lineStyle":{},"points":[{"y":322.5,"x":408},{"y":322.5,"x":408}],"locked":false,"dataAttributes":[],"from":{"id":"1637889b875b27","y":300,"angle":4.71238898038469,"x":408},"group":"","props":{"zindex":10}},"16378962d465e4":{"id":"16378962d465e4","to":{"id":"163789274c9a7c","y":713,"angle":1.5707963267948968,"x":712.5},"text":"","linkerType":"broken","name":"linker","lineStyle":{},"points":[{"y":688.5,"x":712.5},{"y":688.5,"x":712.5}],"locked":false,"dataAttributes":[],"from":{"id":"16378923de804b","y":664,"angle":4.71238898038469,"x":712.5},"group":"","props":{"zindex":30}},"163787b5f93584":{"to":{"y":134.5,"x":196.5},"id":"163787b5f93584","linkerType":"broken","text":"","lineStyle":{"endArrowStyle":"none","beginArrowStyle":"solidArrow"},"name":"linker","from":{"y":209.5,"x":196.5},"dataAttributes":[],"locked":false,"points":[{"y":172,"x":196.5},{"y":172,"x":196.5}],"group":"","props":{"zindex":2}},"1637889bddddf":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":"nextIP = htonl(proute->nexthop)"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"1637889be81fa4","category":"default","name":"no.","value":"","type":"number"},{"id":"1637889be81882","category":"default","name":"name","value":"","type":"string"},{"id":"1637889be81a72","category":"default","name":"owner","value":"","type":"string"},{"id":"1637889be81856","category":"default","name":"link","value":"","type":"link"},{"id":"1637889be81ea8","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1637889bddddf","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"Round Rectangle","name":"roundRectangle","fillStyle":{},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":194,"y":345,"h":42,"angle":0,"x":311,"zindex":8}},"1637889ea0781f":{"to":{"id":"1637889b875b27","angle":1.5707963267948968,"y":258,"x":408},"id":"1637889ea0781f","linkerType":"broken","text":"","lineStyle":{},"name":"linker","from":{"id":"1637884b22064","angle":4.71238898038469,"y":207,"x":408},"dataAttributes":[],"locked":false,"points":[{"y":232.5,"x":408},{"y":232.5,"x":408}],"group":"","props":{"zindex":9}},"163788a13118d7":{"id":"163788a13118d7","to":{"id":"1637889bd35698","y":432,"angle":1.5707963267948968,"x":408},"text":"","linkerType":"broken","name":"linker","lineStyle":{},"points":[{"y":409.5,"x":408},{"y":409.5,"x":408}],"locked":false,"dataAttributes":[],"from":{"id":"1637889bddddf","y":387,"angle":4.71238898038469,"x":408},"group":"","props":{"zindex":11}},"1637897805bd7a":{"id":"1637897805bd7a","to":{"y":103.5,"x":711.5},"text":"","linkerType":"broken","name":"linker","lineStyle":{"endArrowStyle":"none","beginArrowStyle":"solidArrow"},"points":[{"y":141,"x":711.5},{"y":141,"x":711.5}],"locked":false,"dataAttributes":[],"from":{"y":178.5,"x":711.5},"group":"","props":{"zindex":32}},"1637894f05ecd":{"id":"1637894f05ecd","to":{"id":"16378915c2e4d6","y":429,"angle":1.5707963267948966,"x":712.5},"text":"","linkerType":"broken","name":"linker","lineStyle":{},"points":[{"y":408,"x":712.5},{"y":408,"x":712.5}],"locked":false,"dataAttributes":[],"from":{"id":"163789496d3643","y":387,"angle":4.71238898038469,"x":712.5},"group":"","props":{"zindex":27}},"163789274c9a7c":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":"fwd_SendtoLower()发送给下层"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"163789274c9654","category":"default","name":"no.","value":"","type":"number"},{"id":"163789274c9d11","category":"default","name":"name","value":"","type":"string"},{"id":"163789274c9bf9","category":"default","name":"owner","value":"","type":"string"},{"id":"163789274c917a","category":"default","name":"link","value":"","type":"link"},{"id":"163789274c9cdb","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"163789274c9a7c","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"title":"Round Rectangle","category":"basic","name":"roundRectangle","path":[{"actions":[{"action":"move","y":"4","x":"0"},{"y1":"0","action":"quadraticCurve","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"y1":"0","action":"quadraticCurve","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"y1":"h","action":"quadraticCurve","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"y1":"h","action":"quadraticCurve","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":163.5,"angle":0,"h":36,"y":713,"zindex":23,"x":630.75}},"1637890c600f96":{"to":{"id":"163788e9ffdadd","angle":1.5707963267948968,"y":290,"x":873.5},"id":"1637890c600f96","linkerType":"broken","text":"","lineStyle":{},"name":"linker","from":{"id":"163788e403adab","angle":3.1415926535897936,"y":228,"x":794},"dataAttributes":[],"locked":false,"points":[{"y":228,"x":873.5}],"group":"","props":{"zindex":17}},"16378923de804b":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":"计算checkSum"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"16378923de8664","category":"default","name":"no.","value":"","type":"number"},{"id":"16378923de8693","category":"default","name":"name","value":"","type":"string"},{"id":"16378923de8dca","category":"default","name":"owner","value":"","type":"string"},{"id":"16378923de8002","category":"default","name":"link","value":"","type":"link"},{"id":"16378923de8bed","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"16378923de804b","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"title":"Round Rectangle","category":"basic","name":"roundRectangle","path":[{"actions":[{"action":"move","y":"4","x":"0"},{"y1":"0","action":"quadraticCurve","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"y1":"0","action":"quadraticCurve","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"y1":"h","action":"quadraticCurve","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"y1":"h","action":"quadraticCurve","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":100,"angle":0,"h":48,"y":616,"zindex":22,"x":662.5}},"163788b140e379":{"to":{"y":88.5,"x":404.5},"id":"163788b140e379","linkerType":"broken","text":"","lineStyle":{"endArrowStyle":"none","beginArrowStyle":"solidArrow"},"name":"linker","from":{"y":163.5,"x":404.5},"dataAttributes":[],"locked":false,"points":[{"y":126,"x":404.5},{"y":126,"x":404.5}],"group":"","props":{"zindex":14}},"163788e9ffdadd":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":"fwd_LocalRcv()\n提交给上层"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"163788e9ffd0d9","category":"default","name":"no.","value":"","type":"number"},{"id":"163788e9ffdcd4","category":"default","name":"name","value":"","type":"string"},{"id":"163788e9ffd9ad","category":"default","name":"owner","value":"","type":"string"},{"id":"163788e9ffdbbf","category":"default","name":"link","value":"","type":"link"},{"id":"163788e9ffd2a6","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"163788e9ffdadd","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"title":"Round Rectangle","category":"basic","name":"roundRectangle","path":[{"actions":[{"action":"move","y":"4","x":"0"},{"y1":"0","action":"quadraticCurve","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"y1":"0","action":"quadraticCurve","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"y1":"h","action":"quadraticCurve","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"y1":"h","action":"quadraticCurve","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":135.25,"angle":0,"h":40,"y":290,"zindex":16,"x":805.875}},"1637889b875b27":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":"masklen = htonl(proute->masklen)"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"1637889ba2e825","category":"default","name":"no.","value":"","type":"number"},{"id":"1637889ba2f2e8","category":"default","name":"name","value":"","type":"string"},{"id":"1637889ba2ff82","category":"default","name":"owner","value":"","type":"string"},{"id":"1637889ba2f181","category":"default","name":"link","value":"","type":"link"},{"id":"1637889ba2f2eb","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1637889b875b27","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"title":"Round Rectangle","category":"basic","name":"roundRectangle","path":[{"actions":[{"action":"move","y":"4","x":"0"},{"y1":"0","action":"quadraticCurve","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"y1":"0","action":"quadraticCurve","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"y1":"h","action":"quadraticCurve","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"y1":"h","action":"quadraticCurve","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":194,"angle":0,"h":42,"y":258,"zindex":4,"x":311}},"163787b6e2f5cc":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":" vec.clear();"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"163787b6e2f51d","category":"default","name":"no.","value":"","type":"number"},{"id":"163787b6e2f2be","category":"default","name":"name","value":"","type":"string"},{"id":"163787b6e2f0ea","category":"default","name":"owner","value":"","type":"string"},{"id":"163787b6e2fb33","category":"default","name":"link","value":"","type":"link"},{"id":"163787b6e2f0bb","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"163787b6e2f5cc","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"Round Rectangle","name":"roundRectangle","fillStyle":{},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":100,"y":213,"h":70,"angle":0,"x":147,"zindex":1}},"1637894c374ab9":{"to":{"id":"163789496d3643","angle":1.5707963267948966,"y":319,"x":712.5},"id":"1637894c374ab9","linkerType":"broken","text":"","lineStyle":{},"name":"linker","from":{"id":"163788e403adab","angle":4.71238898038469,"y":273,"x":712.5},"dataAttributes":[],"locked":false,"points":[{"y":296,"x":712.5},{"y":296,"x":712.5}],"group":"","props":{"zindex":26}},"16378915c2e4d6":{"textBlock":[{"position":{"w":"w-20","y":"h*0.13","h":"h*0.75","x":"10"},"text":"ttl == 0"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"16378915c2f97","category":"default","name":"no.","value":"","type":"number"},{"id":"16378915c2f266","category":"default","name":"name","value":"","type":"string"},{"id":"16378915c2f4a4","category":"default","name":"owner","value":"","type":"string"},{"id":"16378915c2f8f","category":"default","name":"link","value":"","type":"link"},{"id":"16378915c2f165","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"16378915c2e4d6","anchors":[{"y":"h/2","x":"0"},{"y":"0","x":"w/2"},{"y":"h/2","x":"w"},{"y":"h","x":"w/2"}],"category":"basic","title":"Diamond","name":"diamond","fillStyle":{},"path":[{"actions":[{"action":"move","y":"h/2","x":"0"},{"action":"line","y":"0","x":"w/2"},{"action":"line","y":"h/2","x":"w"},{"action":"line","y":"h","x":"w/2"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":120,"y":429,"h":48,"angle":0,"x":652.5,"zindex":19}},"1637884b22064":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":"dest = htonl(proute->dest)"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"1637884b2202e8","category":"default","name":"no.","value":"","type":"number"},{"id":"1637884b22033a","category":"default","name":"name","value":"","type":"string"},{"id":"1637884b221289","category":"default","name":"owner","value":"","type":"string"},{"id":"1637884b221822","category":"default","name":"link","value":"","type":"link"},{"id":"1637884b221292","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1637884b22064","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"title":"Round Rectangle","category":"basic","name":"roundRectangle","path":[{"actions":[{"action":"move","y":"4","x":"0"},{"y1":"0","action":"quadraticCurve","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"y1":"0","action":"quadraticCurve","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"y1":"h","action":"quadraticCurve","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"y1":"h","action":"quadraticCurve","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":194,"angle":0,"h":42,"y":165,"zindex":3,"x":311}},"16378954cbd1d4":{"to":{"id":"16378923de804b","angle":1.5707963267948968,"y":616,"x":712.5},"id":"16378954cbd1d4","linkerType":"broken","text":"","lineStyle":{},"name":"linker","from":{"id":"1637891f591b1b","angle":4.71238898038469,"y":558,"x":712.5},"dataAttributes":[],"locked":false,"points":[{"y":587,"x":712.5},{"y":587,"x":712.5}],"group":"","props":{"zindex":29}},"1637889ba3c8a7":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":"vec.push_back(route(low, high, masklen, nextIP))"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"1637889bc3f20e","category":"default","name":"no.","value":"","type":"number"},{"id":"1637889bc3f99","category":"default","name":"name","value":"","type":"string"},{"id":"1637889bc3fb4d","category":"default","name":"owner","value":"","type":"string"},{"id":"1637889bc3fcb6","category":"default","name":"link","value":"","type":"link"},{"id":"1637889bc3f676","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1637889ba3c8a7","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"Round Rectangle","name":"roundRectangle","fillStyle":{},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":194,"y":611,"h":42,"angle":0,"x":311,"zindex":5}},"1637896a05641":{"id":"1637896a05641","to":{"id":"16378918030cc4","y":713,"angle":1.5707963267948968,"x":894.5625},"text":"","linkerType":"broken","name":"linker","lineStyle":{},"points":[{"y":353,"x":894.5625}],"locked":false,"dataAttributes":[],"from":{"id":"163789496d3643","y":353,"angle":3.1415926535897936,"x":803.25},"group":"","props":{"zindex":31}},"163789496d3643":{"textBlock":[{"position":{"w":"w-20","h":"h*0.75","y":"h*0.13","x":"10"},"text":"getNextIP(destIP, nextIP)"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"163789496d3aff","category":"default","name":"no.","value":"","type":"number"},{"id":"163789496d33fc","category":"default","name":"name","value":"","type":"string"},{"id":"163789496d3f5","category":"default","name":"owner","value":"","type":"string"},{"id":"163789496d3336","category":"default","name":"link","value":"","type":"link"},{"id":"163789496d3628","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"163789496d3643","anchors":[{"y":"h/2","x":"0"},{"y":"0","x":"w/2"},{"y":"h/2","x":"w"},{"y":"h","x":"w/2"}],"title":"Diamond","category":"basic","name":"diamond","path":[{"actions":[{"action":"move","y":"h/2","x":"0"},{"action":"line","y":"0","x":"w/2"},{"action":"line","y":"h/2","x":"w"},{"action":"line","y":"h","x":"w/2"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":181.5,"angle":0,"h":68,"y":319,"zindex":25,"x":621.75}},"1637891f591b1b":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":"ttl-=1"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"1637891f5910ea","category":"default","name":"no.","value":"","type":"number"},{"id":"1637891f591fd9","category":"default","name":"name","value":"","type":"string"},{"id":"1637891f591b4f","category":"default","name":"owner","value":"","type":"string"},{"id":"1637891f5911a7","category":"default","name":"link","value":"","type":"link"},{"id":"1637891f5914b4","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1637891f591b1b","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"title":"Round Rectangle","category":"basic","name":"roundRectangle","path":[{"actions":[{"action":"move","y":"4","x":"0"},{"y1":"0","action":"quadraticCurve","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"y1":"0","action":"quadraticCurve","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"y1":"h","action":"quadraticCurve","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"y1":"h","action":"quadraticCurve","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":92.5,"angle":0,"h":32,"y":526,"zindex":21,"x":666.25}},"163788a28c0a8f":{"to":{"id":"1637889bc4c64e","angle":1.5707963267948968,"y":521,"x":408},"id":"163788a28c0a8f","linkerType":"broken","text":"","lineStyle":{},"name":"linker","from":{"id":"1637889bd35698","angle":4.71238898038469,"y":474,"x":408},"dataAttributes":[],"locked":false,"points":[{"y":497.5,"x":408},{"y":497.5,"x":408}],"group":"","props":{"zindex":12}},"163788aff7b3d":{"to":{"id":"1637889ba3c8a7","angle":1.5707963267948968,"y":611,"x":408},"id":"163788aff7b3d","linkerType":"broken","text":"","lineStyle":{},"name":"linker","from":{"id":"1637889bc4c64e","angle":4.71238898038469,"y":563,"x":408},"dataAttributes":[],"locked":false,"points":[{"y":587,"x":408},{"y":587,"x":408}],"group":"","props":{"zindex":13}},"1637889bd35698":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":"low = getLow(dest, masklen)"}],"lineStyle":{},"link":"","children":[],"parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"fontStyle":{},"resizeDir":["tl","tr","br","bl"],"dataAttributes":[{"id":"1637889bdd693f","category":"default","name":"no.","value":"","type":"number"},{"id":"1637889bdd6085","category":"default","name":"name","value":"","type":"string"},{"id":"1637889bdd6312","category":"default","name":"owner","value":"","type":"string"},{"id":"1637889bdd6ce8","category":"default","name":"link","value":"","type":"link"},{"id":"1637889bdd6ccc","category":"default","name":"memo","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1637889bd35698","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"Round Rectangle","name":"roundRectangle","fillStyle":{},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":194,"y":432,"h":42,"angle":0,"x":311,"zindex":7}}}}},"meta":{"id":"5b001f94e4b02ec429da554d","member":"59f53ab5e4b0f84f89741385","exportTime":"2018-05-19 21:54:38","diagramInfo":{"category":"flow","title":"Untitled Diagram","created":"2018-05-19 20:59:00","creator":"59f53ab5e4b0f84f89741385","modified":"2018-05-19 21:29:52"},"type":"ProcessOn Schema File","version":"1.0"}} -------------------------------------------------------------------------------- /实验四 IPv4分组转发实验/lab5.cpp: -------------------------------------------------------------------------------- 1 | #include "sysInclude.h" 2 | #include 3 | #include 4 | using namespace std; 5 | 6 | extern void fwd_LocalRcv(char *pBuffer, int length); 7 | 8 | extern void fwd_SendtoLower(char *pBuffer, int length, unsigned int nexthop); 9 | 10 | extern void fwd_DiscardPkt(char *pBuffer, int type); 11 | 12 | extern unsigned int getIpv4Address( ); 13 | 14 | typedef unsigned int uint; 15 | 16 | uint get8(char *buffer) 17 | { 18 | return (uint)buffer[0] & 0xFF; 19 | } 20 | 21 | uint get16(char *buffer) 22 | { 23 | return (get8(buffer + 0) << 8) + get8(buffer + 1); 24 | } 25 | 26 | uint get32(char *buffer) 27 | { 28 | return (get16(buffer + 0) << 16) + get16(buffer + 2); 29 | } 30 | 31 | char setChar(uint i) 32 | { 33 | return (unsigned char)(i&0xFF); 34 | } 35 | 36 | uint getLow(uint IP, uint masklen) 37 | { 38 | masklen = 32 - masklen; 39 | IP >>= masklen; 40 | IP <<= masklen; 41 | return IP; 42 | } 43 | 44 | uint getHigh(uint IP, uint masklen) 45 | { 46 | masklen = 32 - masklen; 47 | IP |= (1 << masklen) -1; 48 | return IP; 49 | } 50 | 51 | struct route 52 | { 53 | uint low,high; 54 | uint masklen; 55 | uint nextIP; 56 | route(uint low, uint high, uint masklen, uint nextIP) 57 | { 58 | this->low = low; 59 | this->high = high; 60 | this->masklen = masklen; 61 | this->nextIP = nextIP; 62 | } 63 | }; 64 | 65 | vector vec; 66 | 67 | void stud_Route_Init() 68 | { 69 | vec.clear(); 70 | return; 71 | } 72 | 73 | void stud_route_add(stud_route_msg *proute) 74 | { 75 | //printf("dest=%u\nmasklen=%u\nnexthop=%u\n", proute->dest, proute->masklen, proute->nexthop); 76 | //std::cout<dest)<<" "<masklen)<<" "<nexthop)<dest); 78 | uint masklen = htonl(proute->masklen); 79 | uint nextIP = htonl(proute->nexthop); 80 | uint low = getLow(dest, masklen); 81 | uint high = getHigh(dest, masklen); 82 | vec.push_back(route(low, high, masklen, nextIP)); 83 | return; 84 | } 85 | 86 | 87 | bool getNextIP(uint destIP, uint &nextIP) 88 | { 89 | uint len = 0; 90 | bool ret = false; 91 | for(uint i = 0; i < vec.size(); i++) 92 | if(vec[i].low <= destIP && vec[i].high >=destIP) 93 | if(vec[i].masklen >= len) 94 | { 95 | len = vec[i].masklen; 96 | nextIP = vec[i].nextIP; 97 | ret = true; 98 | } 99 | return ret; 100 | } 101 | 102 | int stud_fwd_deal(char *pBuffer, int length) 103 | { 104 | // dest IP 105 | uint destIP; 106 | destIP = get32(pBuffer + 16); 107 | uint localIP; 108 | localIP = getIpv4Address(); 109 | if(destIP == 0xFFFFFFFF || destIP == localIP) 110 | { 111 | fwd_LocalRcv(pBuffer, length); 112 | return 0; 113 | } 114 | // dest IP end 115 | 116 | uint nextIP; 117 | if(getNextIP(destIP, nextIP)) 118 | { 119 | // ttl 120 | uint ttl; 121 | ttl = get8(pBuffer + 8); 122 | if(ttl == 0) 123 | { 124 | fwd_DiscardPkt(pBuffer, STUD_FORWARD_TEST_TTLERROR); 125 | return 1; 126 | } 127 | ttl = ttl - 1; 128 | pBuffer[8] = setChar(ttl); 129 | // ttl end 130 | 131 | // check sum 132 | uint checkSum; 133 | checkSum = 0; 134 | int i; 135 | for(i = 0; i < 20; i+=2) 136 | if(i != 10) 137 | checkSum += get16(pBuffer + i); 138 | 139 | while(checkSum > 0xFFFF) 140 | checkSum = (checkSum >> 16) + (checkSum & 0xFFFF); 141 | checkSum = ((~checkSum) & 0xFFFF); 142 | pBuffer[10] = setChar(checkSum >> 8); 143 | pBuffer[11] = setChar(checkSum & 0xFF); 144 | // check sum end 145 | 146 | fwd_SendtoLower(pBuffer, length, nextIP); 147 | return 0; 148 | } 149 | else 150 | { 151 | fwd_DiscardPkt(pBuffer, STUD_FORWARD_TEST_NOROUTE); 152 | return 1; 153 | } 154 | } 155 | 156 | -------------------------------------------------------------------------------- /实验四 IPv4分组转发实验/实验 5:IPv4分组转发实验.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/实验四 IPv4分组转发实验/实验 5:IPv4分组转发实验.pdf -------------------------------------------------------------------------------- /实验四 IPv4分组转发实验/计算机网络实验4报告.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksboy/HIT-Computer-Network/06aa488ea1ab4943275cb8e03b9004be44e82d2b/实验四 IPv4分组转发实验/计算机网络实验4报告.doc --------------------------------------------------------------------------------