精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

動手學習TCP系列之環境搭建

網絡 網絡管理
TCP(Transmission Control Protocol 傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議,由IETF的RFC 793定義。

環境搭建和配置

在開始進行實驗之前,首先看看實驗環境的搭建:

Wireshark:用來抓取網絡上的包,可以清楚的看到TCP/IP協議層,以及每層的詳細信息,通過此處下載

一臺虛擬機:如果客戶端和服務端都在本機,那么數據通信是不經過網卡的,所以Wireshark就抓不到任何數據包。方便的辦法就是本機安裝一個虛擬機,通過本機和虛擬機通信進行實驗。我使用的是VirtualBox+winXP.

Pcap.Net:是一個WinPcap的.NET wrapper,基于這個庫,我們就可以很方便的通過C#代碼來實現下面功能(通過此處下載):

獲取網絡設備

接收、解析數據包

創建、發送數據包

在建立好實驗環境之后,還需要進行一些簡單的配置,保證宿主機和虛擬機之間的網絡是暢通的。

將虛擬機網絡設置為"Host-only Adapter"模式。

 

虛擬機網絡設置好之后,就可以配置本機和虛擬機IP地址了,然后保證宿主機可以ping通虛擬機。

 

環境驗證

通過上面的步驟,簡單的實驗環境就建立完成了,下面就要來實現客戶端和服務端了,試試實驗環境是否能夠正常工作。

服務端

首先,將虛擬機(192.168.56.102)作為服務端,運行下面一段代碼創建一個簡單的socket server,服務端綁定192.168.56.102:8081:

import sys
from socket import *
HOST = "192.168.56.102"
PORT = 8081
BUFSIZ = 1024
ADDR = (HOST, PORT)
server = socket(AF_INET, SOCK_STREAM)
print "Socket created"
try:
server.bind(ADDR)
except error, msg:
print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
sys.exit()
server.listen(10)
print 'Socket now listening'
while True:
conn, addr = server.accept()
try:
data = conn.recv(100)
if data:
print data
except Exception, e:
print e
conn.close()

客戶端

客戶端的實現在本機(192.168.56.101),使用一段基于Pcap.Net的代碼向服務器發送一個[SYN]包(TCP連接建立需要進行三次握手,[SYN]包就是***個握手包),來請求建立TCP連接。

在客戶端代碼中,通過Pcap.Net實現了兩個工具函數,一個用來獲取本機網卡設備列表,一個用在構造不同類型的TPC包。

獲取本機網卡設備列表代碼:

public static PacketDevice GetNICDevice()
{
// Retrieve the device list from the local machine
IList  allDevices = LivePacketDevice.AllLocalMachine;
if (allDevices.Count == 0)
{
Console.WriteLine("No interfaces found! Make sure WinPcap is installed.");
return null;
}
// Print the device list
for (int i = 0; i != allDevices.Count; ++i)
{
LivePacketDevice device = allDevices[i];
Console.Write((i + 1) + ". " + device.Name);
if (device.Description != null)
Console.WriteLine(" (" + device.Description + ")");
else
Console.WriteLine(" (No description available)");
}
int deviceIndex = 0;
do
{
Console.WriteLine("Enter the interface number (1-" + allDevices.Count + "):");
string deviceIndexString = Console.ReadLine();
if (!int.TryParse(deviceIndexString, out deviceIndex) ||
deviceIndex < 1 || deviceIndex > allDevices.Count)
{
deviceIndex = 0;
}
} while (deviceIndex == 0);
return allDevices[deviceIndex - 1];
}

#p#

另一段重要的代碼就是構造TCP包的代碼,根據OSI七層模型,下面代碼中分別創建了鏈路層、網絡層和傳輸層的部分,然后生成一個數據包:

public static Packet BuildTcpPacket(EndPointInfo endPointInfo, TcpControlBits tcpControlBits, List tcpOptionList = null)
{
EthernetLayer ethernetLayer =
new EthernetLayer
{
Source = new MacAddress(endPointInfo.SourceMac),
Destination = new MacAddress(endPointInfo.DestinationMac),
EtherType = EthernetType.None, // Will be filled automatically.
};
IpV4Layer ipV4Layer =
new IpV4Layer
{
Source = new IpV4Address(endPointInfo.SourceIp),
CurrentDestination = new IpV4Address(endPointInfo.DestinationIp),
Fragmentation = IpV4Fragmentation.None,
HeaderChecksum = null, // Will be filled automatically.
Identification = 123,
Options = IpV4Options.None,
Protocol = null, // Will be filled automatically.
Ttl = 10,
TypeOfService = 0,
};
TcpLayer tcpLayer =
new TcpLayer
{
SourcePort = endPointInfo.SourcePort,
DestinationPort = endPointInfo.DestinationPort,
Checksum = null, // Will be filled automatically.
SequenceNumber = seqNum,
AcknowledgmentNumber = ackNum,
ControlBits = tcpControlBits,
Window = windowSize,
UrgentPointer = 0,
Options = (tcpOptionList == null) ? TcpOptions.None : new TcpOptions(tcpOptionList),
};
PacketBuilder builder = new PacketBuilder(ethernetLayer, ipV4Layer, tcpLayer);
return builder.Build(DateTime.Now);
}

主程序中,首先配置了客戶端和服務器的端口、IP/MAC地址信息,然后通過前面兩個工具函數構造一個TCP連接建立請求包([SYN]包),并通過"VirtualBox Host-Only Network"網卡發送給服務端。

static void Main(string[] args)
{
// Take the selected adapter
PacketDevice selectedDevice = Utils.GetNICDevice();
// Open the output device
using (PacketCommunicator communicator = selectedDevice.Open(System.Int32.MaxValue, // name of the device
PacketDeviceOpenAttributes.Promiscuous, // promiscuous mode
1)) // read timeout
{
EndPointInfo endPointInfo = new EndPointInfo();
endPointInfo.SourceMac = "08:00:27:00:C0:D5";
endPointInfo.DestinationMac = "08:00:27:70:A6:AE";
endPointInfo.SourceIp = "192.168.56.101";
endPointInfo.DestinationIp = "192.168.56.102";
endPointInfo.SourcePort = 3330;
endPointInfo.DestinationPort = 8081;
using (BerkeleyPacketFilter filter = communicator.CreateFilter("tcp port " + endPointInfo.DestinationPort))
{
// Set the filter
communicator.SetFilter(filter);
}
communicator.SendPacket(Utils.BuildTcpPacket(endPointInfo, TcpControlBits.Synchronize, null));
PacketHandler(communicator, endPointInfo);
}
Console.WriteLine("Press Enter to Quit!");
Console.ReadLine();
}
private static void PacketHandler(PacketCommunicator communicator, EndPointInfo endPointInfo)
{
Packet packet = null;
do
{
PacketCommunicatorReceiveResult result = communicator.ReceivePacket(out packet);
switch (result)
{
case PacketCommunicatorReceiveResult.Timeout:
// Timeout elapsed
continue;
case PacketCommunicatorReceiveResult.Ok:
Utils.PacketInfoPrinter(packet);
break;
default:
throw new InvalidOperationException("The result " + result + " should never be reached here");
}
} while (true);
}

#p#

運行代碼

代碼完成了,下面看看運行效果,為了直觀的看到數據包的傳輸,這是就可以打開Wireshark了。

為了避免抓到不相關的數據包,可以設置Wireshark中的filter,然后開始抓取。

 

下面運行代碼,并選擇正確的網卡。通過console和Wireshark的輸出可以看到,我們成功的生產了一個[SYN]包并發送到了服務器。

根據TCP連接建立過程可以知道,客戶端發送[SYN]包后,期待從服務器得到一個[SYN, ACK]包。

到這里,說明前面搭建的環境,以及客戶端和服務端的代碼都是可以正常工作的了。

 

 

誰的[RST]包

從上面的結果中看到,客戶端在收到[SYN, ACK]包之后,發送了一個[RST]包重置這條TCP連接。

仔細查看了代碼發現,客戶端的代碼中并沒有發送[RST]包。那么這個[RST]包是哪里來的呢?

操作系統中有協議棧的概念,所以來自應用層的數據,都會一層層的經過操作系統協議棧處理,然后通過網卡發送出去。

 

當客戶端網卡收到[SYN, ACK]包后,這個包會被我們的Pcap.Net程序捕獲,也會被傳送給客戶端操作系統。由于通過Pcap.Net構造的[SYN]包是沒有經過操作系統協議棧的,所以操作系統會認為[SYN, ACK]包是一個無效TCP包,并通過[RST]包重置TCP連接。

到這里,多余[RST]包就可以解釋了。

避免[RST]包

為了避免操作系統協議棧對Pcap.Net程序的影響,通過IP安全策略(通過Run->"secpol.msc"打開設置)的設置,可以避免操作系統從本機(192.168.56.101)向虛擬機(192.168.56.102)發送數據包。

 

設置完成后,再次運行程序,這是程序就正常了。

由于客戶端沒有發送[ACK]包來確認來自服務端的[SYN, ACK]包,根據TCP工作原理,服務端會進行重傳。

 

 

總結

本文中介紹了TCP實驗環境的搭建,通過Pcap.Net創建了一個客戶端,可以構造不同類型的TCP數據包,并通過特定網卡向服務器發送。

后面繼續基于這個環境來看看TCP的一些基本概念,TCP連接、狀態變遷等等。

責任編輯:何妍 來源: 博客園
相關推薦

2015-10-13 15:09:31

2015-10-09 13:15:03

TCP網絡協議

2015-10-14 09:44:55

TCP網絡協議數據傳輸

2015-10-12 08:33:06

TCP網絡協議服務端

2015-10-10 09:51:51

TCP網絡協議客戶端

2015-10-15 09:38:48

TCP網絡協議定時器

2018-07-10 15:15:11

2020-05-20 13:53:41

HTTP環境安裝

2023-07-10 08:43:53

SpringIDEA

2011-09-13 15:26:25

MTK環境搭建

2010-06-07 17:33:14

Linux測試環境搭建

2011-03-21 11:43:45

LAMPPHP

2011-03-21 11:33:09

LAMPApache

2022-12-05 13:59:52

Zabbix 6開源

2012-08-22 10:18:03

PHP

2010-09-01 08:57:18

DHCP實驗

2010-05-28 09:58:00

Linux測試環境搭建

2011-07-22 18:13:59

IOS IDE Xcode

2020-06-24 11:32:28

網絡安全網絡安全技術周刊

2016-09-14 21:55:33

前端測試Karma
點贊
收藏

51CTO技術棧公眾號

美女航空一级毛片在线播放| 亚洲av无码国产综合专区| 九九热精品视频在线观看| 在线免费观看不卡av| 秋霞在线一区二区| 亚洲 精品 综合 精品 自拍| 三级欧美在线一区| 亚洲精品一区av| 激情亚洲综合在线| 性欧美xxxx交| 成人黄色短视频| 黑色丝袜福利片av久久| 在线观看日韩一区| 国产欧美日韩小视频| 国产综合在线观看| 国产成人精品一区二区三区网站观看| 91av在线网站| 欧美日韩中文字幕在线观看| 国产剧情一区| 亚洲第一男人天堂| 亚洲xxx在线观看| 中文在线免费视频| 一区二区三区资源| 亚洲综合首页| 国产毛片av在线| 91色乱码一区二区三区| 国产成人精品免费视频大全最热 | 天堂在线中文网| 久草在线在线精品观看| 欧美综合激情网| 久草视频在线资源| 99久久精品费精品国产风间由美| 亚洲精品一区二三区不卡| 日本少妇一级片| 99久久99九九99九九九| 欧美性色黄大片| 又粗又黑又大的吊av| 在线观看中文| 亚洲欧美国产77777| 亚洲精品一区二区三区四区五区| 日韩成人黄色| 99精品国产一区二区三区不卡| 51精品国产人成在线观看| 一级黄色片免费| 免费在线观看一区二区三区| 国产精品久久久久久久一区探花 | 免费观看在线综合色| 欧美做受高潮1| 亚洲高清毛片一区二区| 国产精品夜夜夜| 91国语精品自产拍在线观看性色 | 精品人体无码一区二区三区| 精品国内自产拍在线观看视频| 日韩精品视频免费| 三级男人添奶爽爽爽视频| 欧美电影在线观看完整版| 日韩精品一区在线观看| 国产成人av片| 麻豆成人入口| 亚洲精选中文字幕| 国产激情在线免费观看| 精品久久美女| 久久激情视频免费观看| 中文字幕亚洲欧美日韩| 国内揄拍国内精品久久| 成人黄色在线网站| 色偷偷噜噜噜亚洲男人的天堂| 日韩毛片无码永久免费看| 国产在线观看91一区二区三区 | 黄色网页在线观看| 亚洲男女一区二区三区| 欧美视频在线第一页| xxxx视频在线| 亚洲国产乱码最新视频| 日韩精品一区二区三区久久| 伊人色综合一区二区三区影院视频| 色综合久久中文综合久久牛| 国产又大又黄又猛| 日韩欧美久久| 日韩国产精品一区| 999久久久国产| 国产精品豆花视频| 欧美中文字幕视频在线观看| 国产成人自拍偷拍| 国产在线播放一区| 久久99精品久久久久久三级 | 亚洲欧美在线观看| av在线播放天堂| 三上悠亚激情av一区二区三区| 欧美性色欧美a在线播放| 原创真实夫妻啪啪av| 久久97久久97精品免视看秋霞| 亚洲欧美成人网| 一区二区三区四区五区| 亚洲人www| 国产精品久久久久久搜索| 亚洲不卡免费视频| 国产欧美视频一区二区三区| 成人在线免费高清视频| 欧美日韩美女| 精品国偷自产国产一区| 女人十八毛片嫩草av| 在线成人www免费观看视频| 国产精品第七十二页| 亚洲av无码一区二区三区性色| 91麻豆6部合集magnet| 综合一区中文字幕| 欧美粗大gay| 精品国产伦理网| 国产视频123区| 一区二区久久| 91精品国产综合久久久久久丝袜| 国产在线观看黄| 亚洲一级在线观看| 日本xxxx黄色| 亚洲调教一区| 国模极品一区二区三区| 夜夜躁很很躁日日躁麻豆| 91丝袜高跟美女视频| 草草草视频在线观看| 激情久久一区二区| 亚洲欧洲成视频免费观看| 国产精选第一页| 国产乱码一区二区三区| 亚洲国内在线| 久久久人成影片一区二区三区在哪下载| 日韩一区二区免费电影| 小嫩苞一区二区三区| 玖玖玖国产精品| 久久久久久久久一区二区| 丁香花高清在线观看完整版| 欧美精品1区2区3区| 成人性生交大片免费看无遮挡aⅴ| 一本久久综合| 国产偷国产偷亚洲高清97cao| 成人日韩欧美| 91精品国产免费久久综合| 免费看的黄色网| 久久精品一区二区三区中文字幕| 国产在线精品日韩| av第一福利在线导航| 日韩久久久精品| 五月天丁香激情| 国产老女人精品毛片久久| 精品国产三级a∨在线| 玖玖精品在线| 视频在线观看99| 中文字幕在线观看精品| 国产精品久久久久久久第一福利| 日本久久精品一区二区| 精品国产精品国产偷麻豆| 国产精品成人播放| av电影在线播放高清免费观看| 在线精品视频一区二区三四| 免费看污片网站| 热久久久久久久| 中文字幕黄色大片| 综合成人在线| 91国产视频在线播放| 日本人妖在线| 欧美三区在线观看| 国产极品国产极品| 不卡的av在线播放| 国产精品免费观看久久| 色综合天天综合网中文字幕| 成人精品在线观看| 久草在线视频资源| 日韩av影片在线观看| 久久久久久久久久成人| 国产精品少妇自拍| 国产又粗又猛大又黄又爽| 伊人激情综合| 欧美日韩在线高清| 日韩在线你懂得| 欧美精品国产精品日韩精品| 手机亚洲第一页| 欧美性受xxxx黑人xyx性爽| 久久国产高清视频| 成人免费高清在线观看| 欧美污视频网站| 99久精品视频在线观看视频| 成人自拍视频网站| 视频二区不卡| 大量国产精品视频| 日本大臀精品| 欧美丰满少妇xxxxx高潮对白 | 37p粉嫩大胆色噜噜噜| 精品在线亚洲视频| 成人黄色av片| 日韩亚洲一区在线| 国产区一区二区| 韩国成人在线| 欧美精品videos| caoporn国产精品免费视频| 日韩欧美色电影| 国产99免费视频| 亚洲综合区在线| 日本免费www| av成人老司机| 91丝袜超薄交口足| 丝袜脚交一区二区| 996这里只有精品| 久久中文亚洲字幕| 久久av一区二区| 1204国产成人精品视频| 国产精品久久久久久久久借妻| 欧美性爽视频| 丝袜一区二区三区| 少妇激情av一区二区| 欧美电影在线免费观看| 欧美a视频在线观看| 亚洲影院免费观看| 小嫩苞一区二区三区| 久久精品人人做人人综合 | 久久6免费视频| 免费永久网站黄欧美| 免费看日本黄色| 99久久精品网站| 丝袜足脚交91精品| 亚洲小说图片| 国产亚洲精品久久飘花| 国产精品1区| 国产精品丝袜视频| 三上悠亚亚洲一区| 日产精品久久久一区二区福利| 欧美人与动牲性行为| 久久艳片www.17c.com| 91亚洲精选| 一区三区二区视频| 蜜桃视频在线入口www| 日韩精品极品在线观看播放免费视频 | 国产日韩欧美一二三区| 欧美xnxx| 国产精品高清在线| 日日夜夜天天综合| 日韩av电影在线播放| 日本乱码一区二区三区不卡| 久久久久久国产三级电影| 特级毛片在线| 欧美激情亚洲精品| 国产桃色电影在线播放| 欧美俄罗斯乱妇| 日韩专区av| 欧美黑人国产人伦爽爽爽| 在线观看电影av| 欧美大片大片在线播放| 国产白丝在线观看| 久久久天堂国产精品女人| 成全电影大全在线观看| 国内精品一区二区三区| 欧美激情20| 日本一本a高清免费不卡| xx欧美视频| 国产精品成人一区| 高清av一区| 成人在线视频网站| 国产精品一区二区三区av| 亚洲自拍偷拍视频| jazzjazz国产精品久久| 精品国产免费一区二区三区| 西野翔中文久久精品国产| 欧美一级片免费观看| 日韩精品久久| 亚洲最新免费视频| 国产真实久久| 鲁一鲁一鲁一鲁一色| 老妇喷水一区二区三区| 鲁一鲁一鲁一鲁一av| 国产在线国偷精品产拍免费yy| 久久发布国产伦子伦精品| 不卡电影免费在线播放一区| wwwwxxxx国产| 中文字幕亚洲一区二区av在线| 999精品在线视频| 亚洲一区二区三区小说| 精品人妻一区二区三区免费看| 欧美午夜精品免费| 国产福利第一页| 日韩精品免费在线观看| 尤物视频在线免费观看| 欧美成人精品激情在线观看| 国内激情视频在线观看| 国产精品久久久久久久久久尿| 一区在线不卡| 久热国产精品视频一区二区三区| 日本黄色精品| h无码动漫在线观看| 葵司免费一区二区三区四区五区| 伊人国产精品视频| 99国产精品99久久久久久| 神马久久久久久久久久久 | 精品欧美一区二区三区免费观看 | 538任你躁在线精品免费| 国产乱人伦精品一区二区在线观看| 精品中文字幕在线播放| 国产精品国产精品国产专区不片 | 国产丝袜在线| 欧美一二三视频| 自拍偷拍亚洲图片| 欧美日韩大片一区二区三区| 欧美.日韩.国产.一区.二区| wwwxxx黄色片| 成人深夜视频在线观看| 影音先锋男人资源在线观看| 天天射综合影视| aaa一区二区三区| 中文字幕亚洲无线码a| sm捆绑调教国产免费网站在线观看| 成人免费视频在线观看超级碰| 欧美一性一交| 黄色片免费在线观看视频| 日产国产欧美视频一区精品| 99久久人妻精品免费二区| 亚洲精品午夜久久久| 性色av一区二区三区四区| 亚洲国产精品高清久久久| 国产精品实拍| 国产精品直播网红| 国产成人影院| 91视频 -- 69xx| 成人av第一页| 久久免费小视频| 日韩一级黄色大片| 在线激情网站| 国产精品视频午夜| 欧美日韩国产免费观看视频| 爱福利视频一区二区| 9i在线看片成人免费| 久久亚洲成人av| 欧美一二三四区在线| 黄色片网站在线观看| 91精品久久久久久久久不口人| 国产尤物久久久| 大肉大捧一进一出好爽动态图| www.亚洲精品| 日本熟妇毛耸耸xxxxxx| 亚洲精品一区二区三区香蕉| 秋霞在线午夜| 国产成人精品免费视频大全最热| 欧美精品二区| 91精品国产高清91久久久久久| 亚洲精品乱码久久久久久| 国产免费黄色大片| 美女视频久久黄| 亚洲码欧美码一区二区三区| 白白操在线视频| 成人丝袜高跟foot| 日韩欧美三级视频| 精品香蕉一区二区三区| 三级在线观看视频| 欧洲亚洲一区二区三区四区五区| 久久av一区二区三区| 狠狠综合久久av一区二区小说| 国产孕妇孕交大片孕| 久久综合色影院| 一区二区三区视频播放| 久久av综合网| 91麻豆蜜桃一区二区三区| 在线免费观看av网址| 在线亚洲欧美视频| av一级久久| 免费高清一区二区三区| av一区二区三区黑人| 中文字幕视频网站| 在线看日韩欧美| www一区二区三区| 成人一级生活片| 91影院在线观看| 中文在线免费看视频| 麻豆成人在线看| 国产日韩三级| 亚洲不卡视频在线| 亚洲美女在线一区| 亚洲av成人无码久久精品老人| 日韩av电影中文字幕| 91精品一区国产高清在线gif| 欧美做受高潮中文字幕| 日韩欧美在线免费| 蜜桃视频在线观看www社区| 成人免费视频视频在| 午夜一级在线看亚洲| 视频国产一区二区| 亚洲国产成人久久综合| 成人开心激情| 日韩亚洲欧美一区二区| 久久久国产精品麻豆| 国产麻豆免费视频| 777777777亚洲妇女| 欧美丰满日韩| 亚洲制服丝袜在线播放| 欧美色爱综合网| 阿v视频在线观看| 一区二区三区日韩欧美精品| 精品少妇久久久| 一本大道久久加勒比香蕉| av动漫精品一区二区| 在线观看日本一区二区| 精品久久久久久电影| 国产在线观看免费麻豆| 免费观看成人在线|