socket協議
① RPC協議、http協議、tcp/ip協議、udp協議、socket協議。這些協議之間有什麼關系
這個你得先了解OSI的七層模型才行,從底層開始分別是物理層、數據鏈路層、網路層、傳輸層、會話層、表示層、應用層。TCP/IP不是OSI模型中的,它屬於DOD模型,是融合了ISO七層中網路層和傳輸層。HTTP是OSI模型中的應用程協議,是在最高層的。UDP協議是OSI傳輸層的協議,在第四層。其他的兩個協議我不太熟悉!
② socket通信中應用層協議是什麼
socket發送的數據其實就是二進制。8個bit就是一個byte。即一個位元組。所以發送的數據最少也要一個位元組。最少也要發送8 bit數據。
應用層協議,應用層其實就是寫代碼應用程序的這一層。這一個部分。協議就是一個約定規范,比如http協議,就是一個應用層協議。它約定了http的請求雙方怎麼發送怎麼接收。
③ Socket 如何定義通訊協議
這個和SOCKET沒關系,SOCKET只是一種通信手段,讓你可以在應用層使用底層網路協議的功能,如TCP、UDP或直接通過網卡發送出去,我估計你說的協議又屬於TCP協議之上的一種應用協議,如HTTP等,不知道你想做什麼?知道什麼?
④ socket是什麼意思
socket(也叫套接字)抄最初是在Unix系統上開發的網路通信的介面。
後來微軟等公司將它移植到了windows下,當然原來unix系統下的還是好用的。
對於socket可以這樣理解:
它就是一個函數庫,裡麵包括大量的函數和相應的數據結構,已經實現好了。
它支持網路通信。
程序開發人員可以通過閱讀相關的函數文檔,了解函數的使用方法,進行網路的編程。
兩種形式的socket:流式套接字,對應與TCP協議。
數據報套接字,對應與UDP協議。
⑤ socket用的什麼協議
看你需要什麼協議
udp流式套接字
tcp 數據報套接字
⑥ RPC協議、http協議、tcp/ip協議、udp協議、socket協議以及soap協議都有什麼相同點和不同點
TCP/IP協議是一個協議簇。裡麵包括很多協議的。UDP只是其中的一個。之所以命名為TCP/IP協議,因為TCP,IP協議是兩個很重要的協議,就用他兩命名了。
tcp和udp都是傳輸協議,主要區別是tcp協議連接需要3次握手,斷開需要四次握手,是通過流來傳輸的,就是確定連接後,一直發送信息,傳完後斷開。udp不需要進行連接,直接把信息封裝成多個報文,直接發送。所以udp的速度更快寫,但是不保證數據的完整性和數據順序,(這個是可以在實現時通過驗證手段來手動確定完整性)。
http協議是建立在TCP協議之上的一種應用,是Web聯網的基礎,最顯著的特點是客戶端發送的每次請求都需要伺服器回送響應,在請求結束後,會主動釋放連接。從建立連接到關閉連接的過程稱為「一次連接」。
socket並不是一種協議,是在程序員層面上對TCP/IP協議的封裝和應用。其實是一個調用介面,方便程序員使用TCP/IP協議棧而已。程序員通過socket來使用tcp/ip協議。但是socket並不是一定要使用tcp/ip協議,Socket編程介面在設計的時候,就希望也能適應其他的網路協議。
rpc是一種通過網路從遠程計算機程序上請求服務,而不需要了解底層網路技術的協議。
初學情況下只要了解http協議和調用http協議,java使用httpClient,還有socket編程就好了。RPC我也了解的不多。
⑦ socket編程基於什麼協議
如果你的socket協議族是AF_INET,然後類型是SOCK_STREAM,那麼是通過TCP協議進行通信的,
如果是SOCK_DGRAM,那麼是UDP通信的,無論TCP還是UDP,都會帶有IP 地址頭。
如果是都在本機,有可能通過127.0.0.1這個回環地址進行通信,回環地址和你的網卡不是一個設備,可能你抓錯了設備,所以抓不到包,你可以嘗試抓一下loop back/本地回環,這樣名字的那個設備。
如果你是AF_LOCAL/AF_UNIX,那麼它是通過sock文件進行通信的,這個抓不到。
⑧ 什麼是Socket
要學Internet上的TCP/IP網路編程,必須理解Socket介面。
Socket介面設計者最先是將介面放在Unix操作系統裡面的。如果了解Unix系統的輸入和輸出的話,就很容易了解Socket了。網路的Socket數據傳輸是一種特殊的I/O,Socket也是一種文件描述符。Socket也具有一個類似於打開文件的函數調用Socket(),該函數返回一個整型的Socket描述符,隨後的連接建立、數據傳輸等操作都是通過該Socket實現的。常用的Socket類型有兩種:流式Socket(SOCK_STREAM)和數據報式Socket(SOCK_DGRAM)。流式是一種面向連接的Socket,針對於面向連接的TCP服務應用;數據報式Socket是一種無連接的Socket,對應於無連接的UDP服務應用。Socket建立
為了建立Socket,程序可以調用Socket函數,該函數返回一個類似於文件描述符的句柄。socket函數原型為:
int socket(int domain, int type, int protocol);
domain指明所使用的協議族,通常為PF_INET,表示互聯網協議族(TCP/IP協議族);type參數指定socket的類型:SOCK_STREAM 或SOCK_DGRAM,Socket介面還定義了原始Socket(SOCK_RAW),允許程序使用低層協議;protocol通常賦值"0"。Socket()調用返回一個整型socket描述符,你可以在後面的調用使用它。
Socket描述符是一個指向內部數據結構的指針,它指向描述符表入口。調用Socket函數時,socket執行體將建立一個Socket,實際上"建立一個Socket"意味著為一個Socket數據結構分配存儲空間。Socket執行體為你管理描述符表。
兩個網路程序之間的一個網路連接包括五種信息:通信協議、本地協議地址、本地主機埠、遠端主機地址和遠端協議埠。Socket數據結構中包含這五種信息。Socket配置
通過socket調用返回一個socket描述符後,在使用socket進行網路傳輸以前,必須配置該socket。面向連接的socket客戶端通過調用Connect函數在socket數據結構中保存本地和遠端信息。無連接socket的客戶端和服務端以及面向連接socket的服務端通過調用bind函數來配置本地信息。
⑨ 怎麼獲取socket的協議類型
Socket協議的形象描述
socket的英文原義是「孔」或「插座」。在這里作為4BDS UNIX的進程通信機制,取後一種意思。socket非常類似於電話插座。以一個國家級電話網為例。電話的通話雙方相當於相互通信的2個進程,區號是它的 網路地址;區內一個單位的交換機相當於一台主機,主機分配給每個用戶的局內號碼相當於socket號。任何用戶在通話之前,首先要佔有一部電話機,相當於 申請一個socket;同時要知道對方的號碼,相當於對方有一個固定的socket。然後向對方撥號呼叫,相當於發出連接請求(假如對方不在同一區內,還 要撥對方區號,相當於給出網路地址)。對方假如在場並空閑(相當於通信的另一主機開機且可以接受連接請求),拿起電話話筒,雙方就可以正式通話,相當於連 接成功。雙方通話的過程,是一方向電話機發出信號和對方從電話機接收信號的過程,相當於向socket發送數據和從socket接收數據。通話結束後,一 方掛起電話機相當於關閉socket,撤消連接。
在電話系統中,一般用戶只能感受到本地電話機和對方電話號碼的存在,建立通話的過程,話音傳輸 的過程以及整個電話系統的技術細節對他都是透明的,這也與socket機制非常相似。socket利用網間網通信設施實現進程通信,但它對通信設施的細節 毫不關心,只要通信設施能提供足夠的通信能力,它就滿足了。
至此,我們對socket進行了直觀的描述。抽象出來,socket實質上提供了進程通信的端 點。進程通信之前,雙方首先必須各自創建一個端點,否則是沒有辦法建立聯系並相互通信的。正如打電話之前,雙方必須各自擁有一台電話機一樣。在網間網內 部,每一個socket用一個半相關描述:
(協議,本地地址,本地埠)
一個完整的socket有一個本地唯一的socket號,由操作系統分配。
最重要的是,socket 是面向客戶/伺服器模型而設計的,針對客戶和伺服器程序提供不同的socket 系統調用。客戶隨機申請一個socket (相當於一個想打電話的人可以在任何一台入網電話上撥號呼叫),系統為之分配一個socket號;伺服器擁有全局公認的 socket ,任何客戶都可以向它發出連接請求和信息請求(相當於一個被呼叫的電話擁有一個呼叫方知道的電話號碼)。
socket利用客戶/伺服器模式巧妙地解決了進程之間建立通信連接的問題。伺服器 socket 半相關為全局所公認非常重要。讀者不妨考慮一下,兩個完全隨機的用戶進程之間如何建立通信?假如通信雙方沒有任何一方的socket 固定,就好比打電話的雙方彼此不知道對方的電話號碼,要通話是不可能的。
-----
Socket 介面是訪問 Internet 使用得最廣泛的方法。 如果你有一台剛配好TCP/IP協議的主機,其IP地址是202.120.127.201, 此時在另一台主機或同一台主機上執行ftp 202.120.127.201,顯然無法建立連接。因"202.120.127.201" 這台主機沒有運行FTP服務軟體。同樣, 在另一台或同一台主機上運行瀏覽軟體 如Netscape,輸入"http://202.120.127.201",也無法建立連接。現在,如果在這台主機上運行一個FTP服務軟體(該軟體將 打開一個Socket, 並將其綁定到21埠),再在這台主機上運行一個Web 服務軟體(該軟體將打開另一個Socket,並將其綁定到80埠)。這樣,在另一台主機或同一台主機上執行ftp 202.120.127.201,FTP客戶軟體將通過21埠來呼叫主機上由FTP 服務軟體提供的Socket,與其建立連接並對話。而在netscape中輸入"http://202.120.127.201"時,將通過80埠來呼 叫主機上由Web服務軟體提供的Socket,與其建 立連接並對話。
在Internet上有很多這樣的主機,這些主機一般運行了多個服務軟體,同時提供幾種服務。 每種服務都打開一個Socket,並綁定到一個埠上,不同的埠對應於不同的服務。Socket正如其英文原意那樣,象一個多孔插座。一台主機猶如布滿 各種插座的房間,每個插座有一個編號,有的插座提供220伏交流電, 有的提供110伏交流電,有的則提供有線電視節目。 客戶軟體將插頭插到不同編號的插座,就可以得到不同的服務。
-----
1.什麼是socket 所謂socket通常也稱作"套接字",用於描述IP地址和埠,是一個通信鏈的句柄。應用程序通常通過"套接字"向網路發出請求或者應答網路請求。 以J2SDK-1.3為例,Socket和ServerSocket類庫位於java.net包中。ServerSocket用於伺服器端,Socket 是建立網路連接時使用的。在連接成功時,應用程序兩端都會產生一個Socket實例,操作這個實例,完成所需的會話。對於一個網路連接來說,套接字是平等 的,並沒有差別,不因為在伺服器端或在客戶端而產生不同級別。不管是Socket還是ServerSocket它們的工作都是通過SocketImpl類 及其子類完成的。
重要的Socket API:java.net.Socket繼承於java.lang.Object,有八個構造器,其方法並不多,下面介紹使用最頻繁的三個方法,其它方法大家可以見JDK-1.3文檔。
Accept方法用於產生"阻塞",直到接受到一個連接,並且返回一個客戶端的Socket對象實例。"阻塞"是一個術語,它使程序運行暫時"停留"在這個地方,直到一個會話產生,然後程序繼續;通常"阻塞"是由循環產生的。
getInputStream方法獲得網路連接輸入,同時返回一個IutputStream對象實例。
getOutputStream方法連接的另一端將得到輸入,同時返回一個 OutputStream對象實例。 注意:其中getInputStream和getOutputStream方法均會產生一個IOException,它必須被捕獲,因為它們返回的流對 象,通常都會被另一個流對象使用。
2.如何開發一個Server-Client模型的程序 開發原理:
伺服器,使用ServerSocket監聽指定的埠,埠可以隨意指定(由於1024以下的埠通常屬於保留埠,在一些操作系統中不可以隨意使用,所以建議使用大於1024的埠),等待客戶連接請求,客戶連接後,會話產生;在完成會話後,關閉連接。
客戶端,使用Socket對網路上某一個伺服器的某一個埠發出連接請求,一旦連接成功,打開會話;會話完成後,關閉Socket。客戶端不需要指定打開的埠,通常臨時的、動態的分配一個1024以上的埠。
Socket介面是TCP/IP網路的API,Socket介面定義了許多函數或常式,程序員 可以用它們來開發TCP/IP網路上的應用程序。要學Internet上的TCP/IP網路編程,必須理解Socket介面。 Socket介面設計者最先是將介面放在Unix操作系統裡面的。如果了解Unix系統的輸入和輸出的話,就很容易了解Socket了。網路的 Socket數據傳輸是一種特殊的I/O,Socket也是一種文件描述符。Socket也具有一個類似於打開文件的函數調用Socket(),該函數返 回一個整型的Socket描述符,隨後的連接建立、數據傳輸等操作都是通過該Socket實現的。
常用的Socket類型有兩種:流式Socket(SOCK_STREAM)和數據報式 Socket(SOCK_DGRAM)。流式是一種面向連接的Socket,針對於面向連接的TCP服務應用;數據報式Socket是一種無連接的 Socket,對應於無連接的UDP服務應用。 Socket建立為了建立Socket,程序可以調用Socket函數,該函數返回一個類似於文件描述符的句柄。socket函數原型為:int socket(int domain, int type, int protocol);domain指明所使用的協議族,通常為PF_INET,表示互聯網協議族(TCP/IP協議族);type參數指定socket的 類型:SOCK_STREAM 或SOCK_DGRAM,Socket介面還定義了原始Socket(SOCK_RAW),允許程序使用低層協議;protocol通常賦值"0"。 Socket()調用返回一個整型socket描述符,你可以在後面的調用使用它。 Socket描述符是一個指向內部數據結構的指針,它指向描述符表入口。調用Socket函數時,socket執行體將建立一個Socket,實際上"建 立一個Socket"意味著為一個Socket數據結構分配存儲空間。 Socket執行體為你管理描述符表。兩個網路程序之間的一個網路連接包括五種信息:通信協議、本地協議地址、本地主機埠、遠端主機地址和遠端協議端 口。Socket數據結構中包含這五種信息。 socket在測量軟體中的使用也很廣泛
[編輯本段 ]
二 socket函數
The socket function creates a socket that is bound to a specific service provider.
SOCKET socket(
int af,
int type,
int protocol
);
Parameters
afAddress family specification.
type
Type specification for the new socket.
The following are the only two type specifications supported for Windows Sockets 1.1: Type Explanation
SOCK_STREAM Provides sequenced, reliable, two-way, connection-based byte streams with an OOB data transmission mechanism. Uses TCP for the Internet address family.
SOCK_DGRAM Supports datagrams, which are connectionless, unreliable buffers of a fixed (typically small) maximum length. Uses UDP for the Internet address family.
In Windows Sockets 2, many new socket types will be introced and no longer need to be specified, since an application can dynamically discover the attributes of each available transport protocol through the WSAEnumProtocols function. Socket type definitions appear in Winsock2.h, which will be periodically updated as new socket types, address families, and protocols are defined.
protocol
Protocol to be used with the socket that is specific to the indicated address family.
Return Values
If no error occurs, socket returns a descriptor referencing the new socket. Otherwise, a value of INVALID_SOCKET is returned, and a specific error code can be retrieved by calling WSAGetLastError.
Error code Meaning
WSANOTINITIALISED A successful WSAStartup call must occur before using this function.
WSAENETDOWN The network subsystem or the associated service provider has failed.
WSAEAFNOSUPPORT The specified address family is not supported.
WSAEINPROGRESS A blocking Windows Sockets 1.1 call is in progress, or the service provider is still processing a callback function.
WSAEMFILE No more socket descriptors are available.
WSAENOBUFS No buffer space is available. The socket cannot be created.
WSAEPROTONOSUPPORT The specified protocol is not supported.
WSAEPROTOTYPE The specified protocol is the wrong type for this socket.
WSAESOCKTNOSUPPORT The specified socket type is not supported in this address family.
Remarks
The socket function causes a socket descriptor and any related resources to be allocated and bound to a specific transport-service provider. Windows Sockets will utilize the first available service provider that supports the requested combination of address family, socket type and protocol parameters. The socket that is created will have the overlapped attribute as a default. For Microsoft operating systems, the Microsoft-specific socket option, SO_OPENTYPE, defined in Mswsock.h can affect this default. See Microsoft-specific documentation for a detailed description of SO_OPENTYPE.
Sockets without the overlapped attribute can be created by using WSASocket. All functions that allow overlapped operation (WSASend, WSARecv,WSASendTo, WSARecvFrom, and WSAIoctl) also support nonoverlapped usage on an overlapped socket if the values for parameters related to overlapped operation are NULL.
When selecting a protocol and its supporting service provider this procere will only choose a base protocol or a protocol chain, not a protocol layer by itself. Unchained protocol layers are not considered to have partial matches on type or af either. That is, they do not lead to an error code of WSAEAFNOSUPPORT or WSAEPROTONOSUPPORT if no suitable protocol is found.
Important The manifest constant AF_UNSPEC continues to be defined in the header file but its use is strongly discouraged, as this can cause ambiguity in interpreting the value of the protocol parameter.
Connection-oriented sockets such as SOCK_STREAM provide full-plex connections, and must be in a connected state before any data can be sent or received on it. A connection to another socket is created with a connect call. Once connected, data can be transferred using send and recv calls. When a session has been completed, a closesocket must be performed.
The communications protocols used to implement a reliable, connection-oriented socket ensure that data is not lost or plicated. If data for which the peer protocol has buffer space cannot be successfully transmitted within a reasonable length of time, the connection is considered broken and subsequent calls will fail with the error code set to WSAETIMEDOUT.
Connectionless, message-oriented sockets allow sending and receiving of datagrams to and from arbitrary peers using sendto and recvfrom. If such a socket is connected to a specific peer, datagrams can be sent to that peer using send and can be received only from this peer using recv.
Support for sockets with type SOCK_RAW is not required, but service providers are encouraged to support raw sockets as practicable.
Notes for IrDA Sockets
The Af_irda.h header file must be explicitly included.
Only SOCK_STREAM is supported; the SOCK_DGRAM type is not supported by IrDA.
The protocol parameter is always set to 0 for IrDA.
Note On Windows NT, raw socket support requires administrative privileges.
Requirements
Windows NT/2000/XP: Included in Windows NT 3.1 and later.
Windows 95/98/Me: Included in Windows 95 and later.
Header: Declared in Winsock2.h.
Library: Use Ws2_32.lib.
See Also
Windows Sockets Programming Considerations Overview, Socket Functions, accept, bind, connect, getsockname, getsockopt, ioctlsocket, listen, recv, recvfrom, select, send, sendto, setsockopt, shutdown, WSASocket
⑩ socket,tcp,http三者之間的區別和原理
最大區別socket是網路層,http是應用成。。
socket是一個程序組件,它支持TCP,UDP等網路通訊協議,也就是通過socket這個東西你可以和任何互聯網或區域網上的計算機通訊。。。TCP,UDP是一個網路層協議,網路層協議不管你發的內容是啥,他只負責把你想法的東西發到對面,發的是啥,他完全不管,因為他不是應用層。。。。
http是應用層協議,在socket的TCP層之上,他是管你發送的內容是什麼的,比如你發的是啥,圖片還是文字還是視頻數據流,發成功了沒有,用什麼語言發,都做了詳細的定義,這樣可以保證寫軟體的人只要按照約定處理數據,就能得到想要的結果。。。
通訊的目的就是應用,所以應用是頂層,否則你發的是坨屎,還是別的什麼,無從知道,因為數據都是二進制數據流,必須描述清楚,約定好。。。