socket報文格式
❶ SOCKET連接報文格式和連接過程要確切的答案,謝謝
SOCKET是編程介面,不是具體的報文,只有TCP/IP、IPX等網路協議才會定義報文格式... SOCKET對於程序員來說,隱藏了IP和IPX的底層實現,具體的報文和鏈接過程請參考具體的網路協議...
❷ 求java socket請求http的報文頭格式!!!
手中不是自己的電腦 沒環境調試不了 不過我找了下面的內容 你看有幫助沒:
最近,需要編寫一個工具模擬HTTP Client, 登錄到一個Server並且要添加一些數據。出現的問題是:login可以成功,但是,添加數據時,總是報錯如下:
HTTP/1.1 505 HTTP Version Not Supported
Server: Apache-Coyote/1.1
Date: Wed, 26 Aug 2009 03:20:19 GMT
Connection: close
根據錯誤的提示,應該是HTTP版本不一致,可是,第一次login都成功了,說明版本應該沒有問題呀。
找了好多資料,都說版本有問題。
最後,終於找到最終的原因了,HTTP寫的格式是非常嚴謹的,只要格式不匹配,就會報錯誤。
我在HTTP的頭中添加一個空格:
HTTP/1.1[空格在此]
Accept: */*
Accept-Language: zh-cn
Host: 10.224.54.126:8080
Cookie: F5_CREDENTIAL=L7a
Connection: Keep-Alive
在提交請求,連login都不可以了,而且報的錯誤是:HTTP/1.1 505 HTTP Version Not Supported
從此可以推斷出,我的添加數據的消息中可能某個地方多了一個空格。
經過仔細的查找,果然,找到了幾個空格,用%20替代之,問題解決了。
另:我也在javaeye裡面混,只是好久沒去了,有機會交流交流
❸ TCP報文的格式及TCP協議的工作原理
TCP報文格式
源埠和目的埠:都是16個比特,分別表示發送方和接收方的埠號。埠號和IP地址構成套接字(socket)地址的主要內容。源端和目的端的套接字合起來唯一地表示一條連接。網路應用程序在通信時直接向套接字發送和接收數據。
序列號和確認號:都是32位的無符號整數,可以表示0-4G(232)位元組的范圍。其中,序列號表示數據部分第一個位元組的序列號,而確認號表示該數據報的接收者希望對方發送的下一個位元組的序號(即序號小於確認號的數據都已正確地被接收)。
頭長度(HLEN):表示TCP報文頭的長度。長度以32-bit為單位來計算。所以如果選項部分的長度不是4個位元組的整數倍,則要加上填充(padding)。
保留域:緊接在頭長度欄位後有6個比特,應該把它設置為0。
再後則是6個標志位。標志位特定的含義:
URG(urgent)為緊急數據標志。如果它為1,則表示本數據報中包含緊急數據。此時緊急數據指
針表示的值有效。它表示在緊急數據之後的第一個位元組的偏侈值(即緊急數據的總長度)。
ACK(acknowledge)為確認標志位。如果ACK為1,則表示報文中的確認號是有效的。否則,報文
中的確認號無效,接收端可以忽略它。
PSH(push)標志位。被置位後,要求發送方的TCP協議軟體馬上發送該數據報,接收方在收到數據後也應該立即上交給應用程序,即使其接收緩沖區尚未填滿。
RST(reset)標志位。用來復位一條連接。RST標志置位的報文稱為復位報文。一般情況下,如果TCP收到的一個報文明顯不是屬於該主機上的任何個連接,則向遠端發送一個復位報文。
SYN(synchronous)標志位。用來建立連接,讓連接雙方同步序列號。如果SYN=1而ACK=0,則表示該數據報為連接請求,如SYN=1而ACK=1則表示是接受連接。
FIN(finish)標志位。表示發送方已經沒有數據要傳輸了,希望釋放連接。
窗口(window)欄位。窗口表示的是從被確認的位元組開始,發送方最多可以連續發送的位元組的個數。接收方通過設置該窗口值的大小,可以調節源端發送數據的速度,從而實現流控。
校驗和(checksum)域。是TCP協議提供的一種檢錯機制。與我們在前面的章節中學過的UDP協議類似,在計算校驗和時不僅要計算TCP報文自身(報文頭和數據),還要增加一些額外的信息內容 – 12個位元組的「偽包頭」。
TCP/IP(Transmission Control Protocol/Internet Protocol的簡寫,中文譯名為傳輸控制協議/互聯網路協議)協議是Internet最基本的協議,簡單地說,就是由底層的IP協議和TCP協議組成的。
在Internet沒有形成之前,各個地方已經建立了很多小型的網路,稱為區域網,Internet的中文意義是「網際網」,它實際上就是將全球各地的區域網連接起來而形成的一個「網之間的網(即網際網)」。然而,在連接之前的各式各樣的區域網卻存在不同的網路結構和數據傳輸規則,將這些小網連接起來後各網之間要通過什麼樣的規則來傳輸數據呢?這就象世界上有很多個國家,各個國家的人說各自的語言,世界上任意兩個人要怎樣才能互相溝通呢?如果全世界的人都能夠說同一種語言(即世界語),這個問題不就解決了嗎?TCP/IP協議正是Internet上的「世界語」。
TCP/IP協議的開發工作始於70年代,是用於互聯網的第一套協議。
❹ 請教socket通信報文格式
TCP報文的格式:
0 1 2 3 4 5 6
0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2 4
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 十六位源埠號| 十六位目標埠號|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|三十二位序列號 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|三十二位確認號 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 四位| |U|A|P|R|S|F| |
| 首部|六位保留位 |R|C|S|S|Y|I| 十六位窗口大小|
| 長度| |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 十六位校驗和| 十六位緊急指針|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 選項(若有) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|數據(若有) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
TCP首部結構
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 版本| 長度| 八位服務類型| 十六位總長度|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 十六位標識| 標志| 十三位片偏移|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 八位生存時間| 八位協議| 十六位首部校驗和|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|三十二位源IP地址 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 三十二位目的IP地址|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|選項(若有) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|數據 |
+-+-+-+-+-+-+-+-+-+-+-+- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP首部結構
|IP首部|TCP首部|TCP數據段|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
❺ socket通信報文為什麼要保留8個位元組
SOCKET編程介面具體報文TCP/IP、IPX等中國絡協議才定義報文格式... SOCKET於程序員說隱藏IPIPX底層實
❻ python3.4中socketserver發送數據的格式要怎麼寫
import urllib
import httplib
test_data = {'ServiceCode':'aaaa','b':'bbbbb'}
test_data_urlencode = urllib.urlencode(test_data)
requrl = "http://192.168.81.16/cgi-bin/python_test/test.py"
headerdata = {"Host":"192.168.81.16"}
conn = httplib.HTTPConnection("192.168.81.16")
conn.request(method="POST",url=requrl,body=test_data_urlencode,headers = headerdata)
response = conn.getresponse()
res= response.read()
print res
❼ socket發送字元串時怎麼自定義編碼格式
SOCKET 一般是怎麼傳輸 UNICODE 字元串的
首先先大概介紹一下向導生成的代碼:
程序的進入點是全局函數_tWinMain, 仔細看一下這個函數,會發現當運行程序時,可以加上參數,例如: ServiceDemo /RegServer 或者 ServiceDemo -RegServer,這個是用來本地伺服器注冊(Register as Local S Register as Service erver); ServiceDemo / Service 或者 ServiceDemo -Service,這個是服務的注冊(Register as Service);ServiceDemo /UnRegServer 或者 ServiceDemo -UnRegServer ,這個是服務的刪除。所以,當寫好了服務程序,只要運行的時候加上參數 Service ,這個時候在SCM中就會看到我們的服務了。可以試一下在SCM中對這個什麼也不做的服務"啟動","停止",改變一下它的啟動方式。
❽ 請教socket通信報文格式
SOCKET是編程介面,不是具體的報文,只有TCP/IP、IPX等網路協議才會定義報文格式... SOCKET對於程序員來說,隱藏了IP和IPX的底層實現
❾ 使用python中的socket模塊向網站post數據的格式是什麼
套接字格式:
socket(family,type[,protocal]) 使用給定的地址族、套接字類型、協議編號(默認為0)來創建套接字。
socket類型
描述
socket.AF_UNIX
只能夠用於單一的Unix系統進程間通信
socket.AF_INET
伺服器之間網路通信
socket.AF_INET6
IPv6
socket.SOCK_STREAM
流式socket , for TCP
socket.SOCK_DGRAM
數據報式socket , for UDP
socket.SOCK_RAW
原始套接字,普通的套接字無法處理ICMP、IGMP等網路報文,而SOCK_RAW可以;其次,SOCK_RAW也可以處理特殊的IPv4報文;此外,利用原始套接字,可以通過IP_HDRINCL套接字選項由用戶構造IP頭。
socket.SOCK_SEQPACKET
可靠的連續數據包服務
創建TCP Socket:
s=[url=]socket.socket(socket.AF_INET,socket.SOCK_STREAM)[/url]
創建UDP Socket:
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
❿ Socket發送的流數據,一般怎麼定義格式接收端怎麼分析
TCP連接,格式自己設置,這個是不定的,應該有消息頭尾標示,長度等等,需要的參數都可以加上去,可以模仿TCP或IP的包