日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

TCP建立連接三次握手過(guò)程詳解(wireshark截圖、java socket源碼)

 昵稱29273511 2015-12-10

TCP(Transmission Control Protocol 傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。

三次握手協(xié)議建立連接圖

握手過(guò)程步驟如下(配wireshark分析圖):


1、客戶端發(fā)送SYN(SEQ=1022)報(bào)文給服務(wù)器端,客戶端進(jìn)入SYN_SEND狀態(tài)。

2、服務(wù)器端收到SYN報(bào)文,回應(yīng)一個(gè)SYN (SEQ=2032)ACK(ACK=1022+1)報(bào)文,服務(wù)器段進(jìn)入SYN_RECV狀態(tài)。

注意:服務(wù)器根據(jù)syn=1判斷客戶端請(qǐng)求建立連接,返回ack=1



3、客戶端收到服務(wù)器端的SYN報(bào)文,回應(yīng)一個(gè)ACK(ACK=2032+1)報(bào)文,進(jìn)入Established狀態(tài)。

注意:確認(rèn)ack number是否與第一次發(fā)送(seq number+1)相等,并ack=1。正確,發(fā)送ack number = seq number(服務(wù)器順序編號(hào))+1


服務(wù)器端:確認(rèn)ack number是否與第一次發(fā)送(seq number+1)相等,并ack=1。正確,連接建立。

連接建立完成,可以傳送數(shù)據(jù)了。

java測(cè)試源碼(只有握手部分)

服務(wù)器代碼:

package com.wangshihai.util;import java.io.IOException;import java.net.InetAddress;import java.net.ServerSocket;import java.net.Socket;/** * * @ClassName: TCPServerSocket* @Description: TODO(tcp server socket類型)* @author 技術(shù)雜貨鋪 wangshihai.com* @date 2015年7月25日 上午8:49:54* */public class TCPServerSocket {	private static ServerSocket serverSocket;	private static Socket socket;	/**	 * 	* @Title: startServerSocket 	* @Description: TODO(根據(jù)端口,綁定本機(jī)地址,建立serversocket) 	* @param @param bindPort    綁定端口	* @param @param bindIp      綁定地址	* @param @param blocknumber 允許客戶端連接的個(gè)數(shù) 	* @return void    返回類型 	* @throws	 */	public static void startServerSocket(int bindPort,String bindIp,int blocknumer){		try {			serverSocket = new ServerSocket(bindPort,blocknumer,InetAddress.getByName(bindIp));			socket = serverSocket.accept();			System.out.println('連接的客戶端地址和端口為:'+socket.getRemoteSocketAddress());		} catch (IOException e) {			e.printStackTrace();		}	}		/**	 * 	* @Title: main 	* @Description: TODO(測(cè)試防范) 	* @param @param args    設(shè)定文件 	* @return void    返回類型 	* @throws	 */	public static void main(String[] args) {		startServerSocket(6000,'192.168.2.100',3);	}}


客戶端代碼:

package com.wangshihai.util;import java.io.IOException;import java.net.InetAddress;import java.net.Socket;import java.net.UnknownHostException;/** * * @ClassName: TCPClientSocket* @Description: TODO(連接server socket 工具類)* @author 技術(shù)雜貨鋪 wangshihai.com* @date 2015年7月25日 上午9:17:33* */public class TCPClientSocket {	private static Socket socket;	/**	 * 	* @Title: connectServerSocket 	* @Description: TODO(根據(jù)服務(wù)器的IP和端口,建立socket連接) 	* @param @param bindPort 訪問(wèn)的服務(wù)器端口 	* @return void    返回類型 	* @throws	 */	public static void connectServerSocket(int bindPort){		InetAddress inetAddress;		try {			//根據(jù)字符串IP獲取inetaddress對(duì)象			inetAddress = InetAddress.getByName('192.168.2.100');			socket = new Socket(inetAddress, bindPort);		} catch (UnknownHostException e) {			e.printStackTrace();		} catch (IOException e) {			e.printStackTrace();		}			}		/**	 * 	* @Title: main 	* @Description: TODO(測(cè)試方法) 	* @param @param args    設(shè)定文件 	* @return void    返回類型 	* @throws	 */	public static void main(String[] args) {		int bindPort = 6000;		connectServerSocket( bindPort);	}} 


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多