国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

linux_網(wǎng)絡(luò)通信-套接字通信socket-網(wǎng)絡(luò)字節(jié)序-IP地址轉(zhuǎn)換函數(shù)-inet_pton函數(shù)-htonl函數(shù)-htons函數(shù)-ntohl函數(shù)-ntohs函數(shù)

這篇具有很好參考價(jià)值的文章主要介紹了linux_網(wǎng)絡(luò)通信-套接字通信socket-網(wǎng)絡(luò)字節(jié)序-IP地址轉(zhuǎn)換函數(shù)-inet_pton函數(shù)-htonl函數(shù)-htons函數(shù)-ntohl函數(shù)-ntohs函數(shù)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

接上一篇:linux_進(jìn)程鎖與文件鎖-pthread_mutexattr_init函數(shù)-pthread_mutexattr_setpshared函數(shù)

??今天開始分享網(wǎng)絡(luò)通信了,主要是就是socket套接字通信,本篇先分享一些預(yù)備知識,有網(wǎng)絡(luò)字節(jié)序以及一些IP地址轉(zhuǎn)換函數(shù),話不多說,開始上菜:

此博主在CSDN發(fā)布的文章目錄:我的CSDN目錄,作為博主在CSDN上發(fā)布的文章類型導(dǎo)讀

1.套接字概念

??Socket本身有“插座”的意思,在Linux環(huán)境下,用于表示進(jìn)程間網(wǎng)絡(luò)通信的特殊文件類型。本質(zhì)為內(nèi)核借助緩沖區(qū)形成的偽文件。
??既然是文件,那么理所當(dāng)然的,我們可以使用文件描述符引用套接字。與管道類似的,Linux系統(tǒng)將其封裝成文件的目的是為了統(tǒng)一接口,使得讀寫套接字和讀寫文件的操作一致。區(qū)別是管道主要應(yīng)用于本地進(jìn)程間通信,而套接字多應(yīng)用于網(wǎng)絡(luò)進(jìn)程間數(shù)據(jù)的傳遞。
??套接字的內(nèi)核實(shí)現(xiàn)較為復(fù)雜,不宜在學(xué)習(xí)初期深入學(xué)習(xí)。
??在TCP/IP協(xié)議中,“IP地址+TCP或UDP端口號”唯一標(biāo)識網(wǎng)絡(luò)通訊中的一個(gè)進(jìn)程。
??“IP地址+端口號”就對應(yīng)一個(gè)socket。欲建立連接的兩個(gè)進(jìn)程各自有一個(gè)socket來標(biāo)識,那么這兩個(gè)socket組成的socket pair就唯一標(biāo)識一個(gè)連接。因此可以用Socket來描述網(wǎng)絡(luò)連接的一對一關(guān)系。
??套接字通信原理如下圖所示:
inet_pton,Linux筆記,網(wǎng)絡(luò),linux,tcp/ip,網(wǎng)絡(luò)字節(jié)序,inet_pton
??在網(wǎng)絡(luò)通信中,套接字一定是成對出現(xiàn)的。一端的發(fā)送緩沖區(qū)對應(yīng)對端的接收緩沖區(qū)。我們使用同一個(gè)文件描述符索發(fā)送緩沖區(qū)和接收緩沖區(qū)。
??TCP/IP協(xié)議最早在BSD UNIX上實(shí)現(xiàn),為TCP/IP協(xié)議設(shè)計(jì)的應(yīng)用層編程接口稱為socket API。

2.網(wǎng)絡(luò)字節(jié)序

??我們已經(jīng)知道,內(nèi)存中的多字節(jié)數(shù)據(jù)相對于內(nèi)存地址有大端和小端之分,磁盤文件中的多字節(jié)數(shù)據(jù)相對于文件中的偏移地址也有大端小端之分。
??網(wǎng)絡(luò)數(shù)據(jù)流同樣有大端小端之分,那么如何定義網(wǎng)絡(luò)數(shù)據(jù)流的地址呢?發(fā)送主機(jī)通常將發(fā)送緩沖區(qū)中的數(shù)據(jù)按內(nèi)存地址從低到高的順序發(fā)出,接收主機(jī)把從網(wǎng)絡(luò)上接到的字節(jié)依次保存在接收緩沖區(qū)中,也是按內(nèi)存地址從低到高的順序保存,因此,網(wǎng)絡(luò)數(shù)據(jù)流的地址應(yīng)這樣規(guī)定:先發(fā)出的數(shù)據(jù)是低地址,后發(fā)出的數(shù)據(jù)是高地址。
??TCP/IP協(xié)議規(guī)定,網(wǎng)絡(luò)數(shù)據(jù)流應(yīng)采用大端字節(jié)序,即低地址高字節(jié)。例如UDP段格式,地址0-1是16位的源端口號,如果這個(gè)端口號是1000(0x3e8),則地址0是0x03,地址1是0xe8,也就是先發(fā)0x03,再發(fā)0xe8,這16位在發(fā)送主機(jī)的緩沖區(qū)中也應(yīng)該是低地址存0x03,高地址存0xe8。
??但是,如果發(fā)送主機(jī)是小端字節(jié)序的,這16位被解釋成0xe803,而不是1000。因此,發(fā)送主機(jī)把1000填到發(fā)送緩沖區(qū)之前需要做字節(jié)序的轉(zhuǎn)換。
??同樣地,接收主機(jī)如果是小端字節(jié)序的,接到16位的源端口號也要做字節(jié)序的轉(zhuǎn)換。如果主機(jī)是大端字節(jié)序的,發(fā)送和接收都不需要做轉(zhuǎn)換。同理,32位的IP地址也要考慮網(wǎng)絡(luò)字節(jié)序和主機(jī)字節(jié)序的問題。
??為使網(wǎng)絡(luò)程序具有可移植性,使同樣的C代碼在大端和小端計(jì)算機(jī)上編譯后都能正常運(yùn)行,可以調(diào)用以下庫函數(shù)做網(wǎng)絡(luò)字節(jié)序和主機(jī)字節(jié)序的轉(zhuǎn)換。

#include <arpa/inet.h>
	uint32_t htonl(uint32_t hostlong);
	uint16_t htons(uint16_t hostshort);
	uint32_t ntohl(uint32_t netlong);
	uint16_t ntohs(uint16_t netshort);

??h表示host,n表示network,l表示32位長整數(shù),s表示16位短整數(shù)。
??如果主機(jī)是小端字節(jié)序,這些函數(shù)將參數(shù)做相應(yīng)的大小端轉(zhuǎn)換然后返回,如果主機(jī)是大端字節(jié)序,這些函數(shù)不做轉(zhuǎn)換,將參數(shù)原封不動(dòng)地返回。
??int a = 7845;//0x1EA5(兩個(gè)字節(jié))
??大端字節(jié)序:高位字節(jié)在前,低位字節(jié)在后,這是人類讀寫數(shù)值的方法,存儲(chǔ)方式:1EA5。
??小端字節(jié)序:低位字節(jié)在前,高位字節(jié)在后,存儲(chǔ)方式:A51E。(計(jì)算機(jī)存儲(chǔ)方式)

2.1.htonl函數(shù)

函數(shù)作用:
??將無符號整數(shù)hostlong從主機(jī)字節(jié)順序轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序。
頭文件:
??#include <arpa/inet.h>
函數(shù)原型:
??int32_t htonl(uint32_t hostlong);
函數(shù)參數(shù):
??hostlong:需要轉(zhuǎn)換的無符號主機(jī)字節(jié)
返回值:
??返回一個(gè)網(wǎng)絡(luò)字節(jié)順序的值。

2.2.htons函數(shù)

函數(shù)作用:
??從主機(jī)字節(jié)轉(zhuǎn)換無符號短整數(shù)hostshort順序到網(wǎng)絡(luò)字節(jié)順序。
頭文件:
??#include <arpa/inet.h>
函數(shù)原型:
??uint16_t htons(uint16_t hostshort);
函數(shù)參數(shù):
??hostshort:需要轉(zhuǎn)換的無符號短整數(shù)主機(jī)字節(jié)
返回值:
??返回一個(gè)網(wǎng)絡(luò)字節(jié)順序的值。

2.3.ntohl函數(shù)

函數(shù)作用:
??從網(wǎng)絡(luò)字節(jié)順序轉(zhuǎn)換無符號整數(shù)netlong到主機(jī)字節(jié)順序。
頭文件:
??#include <arpa/inet.h>
函數(shù)原型:
??uint32_t ntohl(uint32_t netlong);
函數(shù)參數(shù):
??netlong:需要轉(zhuǎn)換的無符號整數(shù)網(wǎng)絡(luò)字節(jié)順序的值。
返回值:
??返回主機(jī)字節(jié)順序的值。(32位)
注意:

2.4.ntohs函數(shù)

函數(shù)作用:
??從網(wǎng)絡(luò)字節(jié)轉(zhuǎn)換無符號短整數(shù)netshort順序到主機(jī)字節(jié)順序。
頭文件:
??#include <arpa/inet.h>
函數(shù)原型:
??uint16_t ntohs(uint16_t netshort);
函數(shù)參數(shù):
??netshort:需要轉(zhuǎn)換的無符號短整數(shù)網(wǎng)絡(luò)字節(jié)順序的值。
返回值:
??返回主機(jī)字節(jié)順序的值。(16位)

3.IP地址轉(zhuǎn)換函數(shù)

早期:
??#include <sys/socket.h>
??#include <netinet/in.h>
??#include <arpa/inet.h>
??int inet_aton(const char *cp, struct in_addr *inp);
??in_addr_t inet_addr(const char *cp);
??char *inet_ntoa(struct in_addr in);
①只能處理IPv4的ip地址
②是不可重入函數(shù)
③注意參數(shù)是struct in_addr

現(xiàn)在:
??#include <arpa/inet.h>
??int inet_pton(int af, const char *src, void *dst);
??const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);

①支持IPv4和IPv6
②可重入函數(shù)
③其中inet_pton和inet_ntop不僅可以轉(zhuǎn)換IPv4的in_addr,還可以轉(zhuǎn)換IPv6的in6_addr。

??因此函數(shù)接口是void *addrptr。

3.1.inet_pton函數(shù)

函數(shù)作用:
??將點(diǎn)分文本的IP地址轉(zhuǎn)換為二進(jìn)制網(wǎng)絡(luò)字節(jié)序”的IP地址。
頭文件:
??#include <arpa/inet.h>
函數(shù)原型:
??int inet_pton(int af, const char *src, void *dst);
函數(shù)參數(shù):
af:地址簇
??取值:AF_INET --表示IPV4
??取值:AF_INET6 --表示IPV6
src:源地址
dst:轉(zhuǎn)換后的地址
返回值:
??返回1:成功;
??返回0:輸入不是有效表達(dá)式;
??返回-1:失敗。
例如:
?? struct sockaddr_in serv_addr;
?? char buf[BUFSIZ];
?? bzero(&serv_addr, sizeof(serv_addr));
?? serv_addr.sin_family = AF_INET;
?? inet_pton(AF_INET, SERV_IP, &serv_addr.sin_addr.s_addr);
??serv_addr.sin_port = htons(SERV_PORT);

3.2.inet_ntop函數(shù)

函數(shù)作用:
??將數(shù)值格式轉(zhuǎn)化為點(diǎn)分十進(jìn)制的ip地址格式。
頭文件:
??#include <arpa/inet.h>
函數(shù)原型:
??const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
函數(shù)參數(shù):
af:地址簇
??取值:AF_INET --表示IPV4
??取值:AF_INET6 --表示IPV6
src:源地址
dst:轉(zhuǎn)換后的地址

返回值:
??若成功則為指向結(jié)構(gòu)的指針,若出錯(cuò)則為NULL,將errno置為EAFNOSUPPORT。
注意:

3.3.bzero函數(shù)

函數(shù)作用:
??將指定內(nèi)存清0。
頭文件:
??#include <strings.h>
函數(shù)原型:
??void bzero(void *s, size_t n);
函數(shù)參數(shù):
??s:需要清空內(nèi)存的首地址;
??n:s的大小
返回值:
無。
例如:
??struct sockaddr_in serv_addr;
??bzero(&serv_addr, sizeof(serv_addr));

4.sockaddr數(shù)據(jù)結(jié)構(gòu)

??strcut sockaddr 很多網(wǎng)絡(luò)編程函數(shù)誕生早于IPv4協(xié)議,那時(shí)候都使用的是sockaddr結(jié)構(gòu)體,為了向前兼容,現(xiàn)在sockaddr退化成了(void *)的作用,傳遞一個(gè)地址給函數(shù),至于這個(gè)函數(shù)是sockaddr_in還是sockaddr_in6,由地址族確定,然后函數(shù)內(nèi)部再強(qiáng)制類型轉(zhuǎn)化為所需的地址類型。

sockaddr數(shù)據(jù)結(jié)構(gòu):
inet_pton,Linux筆記,網(wǎng)絡(luò),linux,tcp/ip,網(wǎng)絡(luò)字節(jié)序,inet_pton

struct sockaddr {
	sa_family_t sa_family; 		/* address family, AF_xxx */
	char sa_data[14];			/* 14 bytes of protocol address */
};

??使用 sudo grep -r “struct sockaddr_in {” /usr 命令可查看到struct sockaddr_in結(jié)構(gòu)體的定義。一般其默認(rèn)的存儲(chǔ)位置:/usr/include/linux/in.h 文件中。

struct sockaddr_in {
	__kernel_sa_family_t sin_family; 			/* Address family */  	地址結(jié)構(gòu)類型
	__be16 sin_port;					 		/* Port number */		端口號
	struct in_addr sin_addr;					/* Internet address */	IP地址
	/* Pad to size of `struct sockaddr'. */
	unsigned char __pad[__SOCK_SIZE__ - sizeof(short int) -
	sizeof(unsigned short int) - sizeof(struct in_addr)];
};

struct in_addr {						/* Internet address. */
	__be32 s_addr;
};

struct sockaddr_in6 {
	unsigned short int sin6_family; 		/* AF_INET6 */
	__be16 sin6_port; 					/* Transport layer port # */
	__be32 sin6_flowinfo; 				/* IPv6 flow information */
	struct in6_addr sin6_addr;			/* IPv6 address */
	__u32 sin6_scope_id; 				/* scope id (new in RFC2553) */
};

struct in6_addr {
	union {
		__u8 u6_addr8[16];
		__be16 u6_addr16[8];
		__be32 u6_addr32[4];
	} in6_u;
	#define s6_addr 		in6_u.u6_addr8
	#define s6_addr16 	in6_u.u6_addr16
	#define s6_addr32	 	in6_u.u6_addr32
};

#define UNIX_PATH_MAX 108
	struct sockaddr_un {
	__kernel_sa_family_t sun_family; 	/* AF_UNIX */
	char sun_path[UNIX_PATH_MAX]; 	/* pathname */
};

??Pv4和IPv6的地址格式定義在netinet/in.h中,IPv4地址用sockaddr_in結(jié)構(gòu)體表示,包括16位端口號和32位IP地址,IPv6地址用sockaddr_in6結(jié)構(gòu)體表示,包括16位端口號、128位IP地址和一些控制字段。
??UNIX Domain Socket的地址格式定義在sys/un.h中,用sock-addr_un結(jié)構(gòu)體表示。各種socket地址結(jié)構(gòu)體的開頭都是相同的,前16位表示整個(gè)結(jié)構(gòu)體的長度(并不是所有UNIX的實(shí)現(xiàn)都有長度字段,如Linux就沒有),后16位表示地址類型。
??IPv4、IPv6和Unix Domain Socket的地址類型分別定義為常數(shù)AF_INET、AF_INET6、AF_UNIX。這樣,只要取得某種sockaddr結(jié)構(gòu)體的首地址,不需要知道具體是哪種類型的sockaddr結(jié)構(gòu)體,就可以根據(jù)地址類型字段確定結(jié)構(gòu)體中的內(nèi)容。
??因此,socket API可以接受各種類型的sockaddr結(jié)構(gòu)體指針做參數(shù),例如bind、accept、connect等函數(shù),這些函數(shù)的參數(shù)應(yīng)該設(shè)計(jì)成void *類型以便接受各種類型的指針,但是sock API的實(shí)現(xiàn)早于ANSI C標(biāo)準(zhǔn)化,那時(shí)還沒有void *類型,因此這些函數(shù)的參數(shù)都用struct sockaddr *類型表示,在傳遞參數(shù)之前要強(qiáng)制類型轉(zhuǎn)換一下,
??例如:

	struct sockaddr_in servaddr;
	bind(listen_fd, (struct sockaddr *)&servaddr, sizeof(servaddr));		/* initialize servaddr */

??以上就是本次的分享了,希望對大家有所幫助,歡迎關(guān)注博主一起學(xué)習(xí)更多的新知識!文章來源地址http://www.zghlxwxcb.cn/news/detail-770339.html

到了這里,關(guān)于linux_網(wǎng)絡(luò)通信-套接字通信socket-網(wǎng)絡(luò)字節(jié)序-IP地址轉(zhuǎn)換函數(shù)-inet_pton函數(shù)-htonl函數(shù)-htons函數(shù)-ntohl函數(shù)-ntohs函數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 「網(wǎng)絡(luò)編程」第二講:網(wǎng)絡(luò)編程socket套接字(三)_ 簡單TCP網(wǎng)絡(luò)通信程序的實(shí)現(xiàn)

    「網(wǎng)絡(luò)編程」第二講:網(wǎng)絡(luò)編程socket套接字(三)_ 簡單TCP網(wǎng)絡(luò)通信程序的實(shí)現(xiàn)

    「前言」文章是關(guān)于網(wǎng)絡(luò)編程的socket套接字方面的,上一篇是網(wǎng)絡(luò)編程socket套接字(二),下面開始講解!? 「歸屬專欄」網(wǎng)絡(luò)編程 「主頁鏈接」個(gè)人主頁 「筆者」楓葉先生(fy) 「楓葉先生有點(diǎn)文青病」「每篇一句」 I?do?not?know?where?to?go,but?I?have?been?on?the?road. 我不知

    2024年02月11日
    瀏覽(28)
  • Linux之套接字UDP實(shí)現(xiàn)網(wǎng)絡(luò)通信

    Linux之套接字UDP實(shí)現(xiàn)網(wǎng)絡(luò)通信

    ? 套接字(Socket)是計(jì)算機(jī)網(wǎng)絡(luò)中實(shí)現(xiàn)網(wǎng)絡(luò)通信的一種 編程接口 。它提供了應(yīng)用程序與網(wǎng)絡(luò)通信之間的一座橋梁,因?yàn)樗试S應(yīng)用程序通過網(wǎng)絡(luò)發(fā)送和接收相應(yīng)的數(shù)據(jù)以實(shí)現(xiàn)不同主機(jī)之間的通信。 ? 通常套接字由以下兩部分組成: 1.網(wǎng)絡(luò)IP和端口號 :IP用來標(biāo)識主機(jī),而端口

    2024年02月11日
    瀏覽(23)
  • Linux下套接字TCP實(shí)現(xiàn)網(wǎng)絡(luò)通信

    Linux下套接字TCP實(shí)現(xiàn)網(wǎng)絡(luò)通信

    ? 套接字(Socket) 是計(jì)算機(jī)網(wǎng)絡(luò)中實(shí)現(xiàn)網(wǎng)絡(luò)通信的一種 編程接口 。它提供了應(yīng)用程序與網(wǎng)絡(luò)通信之間的一座橋梁,因?yàn)樗试S應(yīng)用程序通過網(wǎng)絡(luò)發(fā)送和接收相應(yīng)的數(shù)據(jù)以實(shí)現(xiàn)不同主機(jī)之間的通信。 通常套接字由以下兩部分組成: 1.網(wǎng)絡(luò)IP和端口號 :IP用來標(biāo)識主機(jī),而端口號

    2024年02月10日
    瀏覽(25)
  • 【Java】網(wǎng)絡(luò)編程與Socket套接字、UDP編程和TCP編程實(shí)現(xiàn)客戶端和服務(wù)端通信

    【Java】網(wǎng)絡(luò)編程與Socket套接字、UDP編程和TCP編程實(shí)現(xiàn)客戶端和服務(wù)端通信

    為什么需要網(wǎng)絡(luò)編程? 現(xiàn)在網(wǎng)絡(luò)普及程序越來越高,網(wǎng)絡(luò)上保存著我們?nèi)粘I钪行枰母鞣N資源,使用程序通過網(wǎng)絡(luò)來獲取這些資源的過程就需要網(wǎng)絡(luò)編程來實(shí)現(xiàn)。 什么是網(wǎng)絡(luò)編程? 網(wǎng)絡(luò)編程,指網(wǎng)絡(luò)上的主機(jī),通過不同的進(jìn)程以程序的方式實(shí)現(xiàn)網(wǎng)絡(luò)通信(網(wǎng)絡(luò)數(shù)據(jù)傳輸)

    2024年02月17日
    瀏覽(90)
  • 學(xué)習(xí)網(wǎng)絡(luò)編程N(yùn)o.5【TCP套接字通信】

    學(xué)習(xí)網(wǎng)絡(luò)編程N(yùn)o.5【TCP套接字通信】

    北京時(shí)間:2023/8/25/15:52,昨天剛把耗時(shí)3天左右的文章更新,充分說明我們這幾天并不是在擺爛中度過,而是在為了更文不懈奮斗,歷時(shí)這么多天主要是因?yàn)樵摬糠种R比較陌生,所以需要我們花費(fèi)大量的時(shí)間去細(xì)細(xì)研究,為后面無論是TCP套接字,還是網(wǎng)絡(luò)的學(xué)習(xí)都能更加融會(huì)

    2024年02月10日
    瀏覽(28)
  • C++網(wǎng)絡(luò)編程 TCP套接字基礎(chǔ)知識,利用TCP套接字實(shí)現(xiàn)客戶端-服務(wù)端通信

    C++網(wǎng)絡(luò)編程 TCP套接字基礎(chǔ)知識,利用TCP套接字實(shí)現(xiàn)客戶端-服務(wù)端通信

    流式套接字編程針對TCP協(xié)議通信,即是面向?qū)ο蟮耐ㄐ?,分為服?wù)端和客戶端兩部分。 1)加載套接字庫( 使用函數(shù)WSAStartup() ),創(chuàng)建套接字( 使用socket() ) 2)綁定套接字到一個(gè)IP地址和一個(gè)端口上( 使用函數(shù)bind() ) 3)將套接字設(shè)置為監(jiān)聽模式等待連接請求( 使用函數(shù)

    2024年02月03日
    瀏覽(102)
  • 【網(wǎng)絡(luò)編程】利用套接字實(shí)現(xiàn)一個(gè)簡單的網(wǎng)絡(luò)通信(UDP實(shí)現(xiàn)聊天室 附上源碼)

    【網(wǎng)絡(luò)編程】利用套接字實(shí)現(xiàn)一個(gè)簡單的網(wǎng)絡(luò)通信(UDP實(shí)現(xiàn)聊天室 附上源碼)

    源IP地址(Source IP Address): 源IP地址是數(shù)據(jù)包發(fā)送方(或數(shù)據(jù)流出發(fā)點(diǎn))的唯一標(biāo)識符。它用于在互聯(lián)網(wǎng)或本地網(wǎng)絡(luò)中定位發(fā)送數(shù)據(jù)包的設(shè)備或主機(jī)。源IP地址是數(shù)據(jù)包的出發(fā)點(diǎn),即數(shù)據(jù)從這個(gè)地址開始傳送,向目的IP地址指示的設(shè)備發(fā)送。 在TCP/IP協(xié)議中,源IP地址通常由發(fā)

    2024年02月14日
    瀏覽(25)
  • 【Linux】socket 編程(socket套接字介紹、字節(jié)序、socket地址、IP地址轉(zhuǎn)換函數(shù)、套接字函數(shù)、TCP通信實(shí)現(xiàn))

    【Linux】socket 編程(socket套接字介紹、字節(jié)序、socket地址、IP地址轉(zhuǎn)換函數(shù)、套接字函數(shù)、TCP通信實(shí)現(xiàn))

    橙色 所謂套接字,就是對網(wǎng)絡(luò)中不同主機(jī)上的應(yīng)用進(jìn)程之間進(jìn)行雙向通信的端點(diǎn)的抽象。 一個(gè)套接字就是網(wǎng)絡(luò)上進(jìn)程通信的一端,提供了應(yīng)用層進(jìn)程利用網(wǎng)絡(luò)協(xié)議交換數(shù)據(jù)的機(jī)制。從所處的地位來講,套接字上聯(lián)應(yīng)用進(jìn)程,下聯(lián)網(wǎng)絡(luò)協(xié)議棧,是應(yīng)用程序通過網(wǎng)絡(luò)協(xié)議進(jìn)程通

    2024年02月09日
    瀏覽(18)
  • Linux網(wǎng)絡(luò)編程- 原始套接字(Raw Socket)

    原始套接字(Raw Socket)提供了一種機(jī)制,允許應(yīng)用程序直接訪問底層傳輸協(xié)議,繞過操作系統(tǒng)提供的傳輸層接口。這種套接字通常用于實(shí)現(xiàn)新的協(xié)議或?qū)ΜF(xiàn)有協(xié)議進(jìn)行低級別的操作。 以下是對原始套接字的詳細(xì)介紹: 定義與用途 : 原始套接字是直接基于網(wǎng)絡(luò)層(如IP)的。

    2024年02月07日
    瀏覽(97)
  • 【Linux網(wǎng)絡(luò)】網(wǎng)絡(luò)編程套接字 -- 基于socket實(shí)現(xiàn)一個(gè)簡單UDP網(wǎng)絡(luò)程序

    【Linux網(wǎng)絡(luò)】網(wǎng)絡(luò)編程套接字 -- 基于socket實(shí)現(xiàn)一個(gè)簡單UDP網(wǎng)絡(luò)程序

    我們把數(shù)據(jù)從A主機(jī)發(fā)送到B主機(jī),是目的嗎?不是,真正通信的不是這兩個(gè)機(jī)器!其實(shí)是這兩臺(tái)機(jī)器上面的軟件(人) 數(shù)據(jù)有 IP(公網(wǎng)) 標(biāo)識一臺(tái)唯一的主機(jī) ,用誰來標(biāo)識各自主機(jī)上客戶或者服務(wù)進(jìn)程的唯一性呢? 為了更好的表示一臺(tái)主機(jī)上服務(wù)進(jìn)程的唯一性,我們采用 端口號

    2024年02月12日
    瀏覽(848)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包