




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
應(yīng)用層傳輸層互聯(lián)網(wǎng)層網(wǎng)絡(luò)接口層它它主主要要實(shí)實(shí)現(xiàn)現(xiàn)將將上上層層傳傳下下來來的的數(shù)數(shù)據(jù)
封裝裝成成底底層層物物理理網(wǎng)網(wǎng)絡(luò)絡(luò)支支持持的的數(shù)數(shù)據(jù)據(jù)格格式式,,并并轉(zhuǎn)轉(zhuǎn)換換成成真真正正的的電電氣氣信信號號而而在在物物理理網(wǎng)網(wǎng)絡(luò)絡(luò)上上傳傳輸輸。。主主要要功能能是是使使源源端端和和目目的的端端上上的的對對等等實(shí)實(shí)體體可可以以進(jìn)進(jìn)行行
。。它它的的功功能能是是使使主主機(jī)機(jī)能能夠夠把把分分組組發(fā)發(fā)往往任任何何網(wǎng)網(wǎng)絡(luò)絡(luò),,并并使使各各分分組組獨(dú)獨(dú)立立地地到到達(dá)達(dá)目目標(biāo)標(biāo)..TCP/IP網(wǎng)絡(luò)簡介TCP/IP參考模型是計(jì)算機(jī)網(wǎng)絡(luò)的始祖,它首先提出了網(wǎng)絡(luò)分層的概念。它一共分為4層:網(wǎng)絡(luò)接口層、互聯(lián)網(wǎng)層、傳輸層和應(yīng)用層,其參考模型如圖:應(yīng)應(yīng)用用層層協(xié)協(xié)議議建建立立在在網(wǎng)網(wǎng)絡(luò)絡(luò)層層協(xié)協(xié)議議之之上上,,專專門門用用于于為為用用戶戶提提供供應(yīng)應(yīng)用用服服務(wù)務(wù),,一一般般是是可可見見的的。。軟帝信息科技http
OSI參考模型與TCP/IP參考模型應(yīng)用層表示層會話層傳輸層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層應(yīng)用層傳輸層網(wǎng)絡(luò)層網(wǎng)絡(luò)接口層OSI參考模型TCP/IP參考模型軟帝信息科技http
OSI參考模型與TCP/IP參考模型對應(yīng)關(guān)系軟帝信息科技http
TCP/IP協(xié)議族,為網(wǎng)際數(shù)據(jù)通信協(xié)議組大體上分為三部TCP/IP實(shí)際上一個(gè)一起工作的通信提供通路。為 方便可將TCP/IP分:1.Internet協(xié)議(IP)2.傳輸控制協(xié)議(TCP)和用戶數(shù)據(jù)報(bào)文協(xié)議(UDP)3.處于TCP和UDP之上的一組協(xié)議專門開發(fā)的應(yīng)用程序。它們包括:
NET,文件傳送協(xié)議(FTP),
服務(wù)(DNS)和簡單的郵件傳送程序(SMTP)等許多協(xié)議。軟帝信息科技http
網(wǎng)絡(luò)層第一部分也稱為網(wǎng)絡(luò)層。包括Internet
協(xié)議(IP)、網(wǎng)際控制報(bào)文協(xié)議(ICMP)和地址識別協(xié)議(ARP).Internet
協(xié)議(IP)該協(xié)議被設(shè)計(jì)成互聯(lián)分組交換通信網(wǎng),以形成一個(gè)網(wǎng)際通信環(huán)境。它負(fù)責(zé)在源主機(jī)和目的
機(jī)之間傳輸來自其較的稱為數(shù)據(jù)報(bào)文的數(shù)據(jù)塊,它在源和目的地之間提供非連接型傳遞服務(wù)。網(wǎng)際控制報(bào)文協(xié)議(ICMP)它實(shí)際上不是IP層部分,但直接同IP層一起
網(wǎng)絡(luò)上的某些出錯(cuò)情況。允許網(wǎng)際路由器傳輸差錯(cuò)信息或測試報(bào)文。地址識別協(xié)議(ARP)ARP 實(shí)際上不是網(wǎng)絡(luò)層部分,它處于IP和數(shù)據(jù)鏈路層之間,它是在32位IP地址和48位局域網(wǎng)物理地址之間執(zhí)行翻譯的協(xié)議。軟帝信息科技http
傳輸層第二部分是傳輸層協(xié)議。包括傳輸控制協(xié)議和用戶數(shù)據(jù)報(bào)文協(xié)議。傳輸控制協(xié)議(TCP)。由于IP提供非連接型傳遞服務(wù),因此TCP應(yīng)為應(yīng)用程序存取網(wǎng)絡(luò)創(chuàng)造了條件,使用可靠的面向連接的傳輸層服務(wù)。該協(xié)議為建立網(wǎng)際上用戶進(jìn)程之間的負(fù)責(zé)。此外,還確保兩個(gè)以上進(jìn)程之間的可靠通信。它所提供的功能如下。1.
輸入
建立請求。2.請求另一網(wǎng)絡(luò)站點(diǎn)
。3.可靠的發(fā)送和接收數(shù)據(jù)。4.適度的關(guān)閉
。軟帝信息科技http
傳輸層用戶數(shù)據(jù)報(bào)文協(xié)議(UDP)UDP提供不可靠的非連接型傳輸層服務(wù),它允許在源和目的地站點(diǎn)之間傳送數(shù)據(jù),而不必在傳送數(shù)據(jù)之前建立。此外,該協(xié)議還不使用TCP使用的端對端差錯(cuò)校驗(yàn)。當(dāng)使用UDP時(shí),傳輸層功能全都發(fā)揮,而開銷卻比較低。它主要用于那些不要求TCP協(xié)議的非連接型的應(yīng)用程序。例如,名字服務(wù)、網(wǎng)絡(luò)管理、
點(diǎn)播和網(wǎng)絡(luò)會議等.軟帝信息科技http
在TCP/IP模型中,上層功能的實(shí)現(xiàn)要依賴下層提供的服務(wù),如在底層是以太網(wǎng)的TCP/IP網(wǎng)絡(luò)體系體系中,IP分組的傳送要封裝在以太網(wǎng)幀中,而TCP/UDP包的傳送又是封裝在IP分組的data中實(shí)現(xiàn)的。以太網(wǎng)幀以太網(wǎng)幀目的以太網(wǎng)地址destination
Ethernet
address源以太網(wǎng)地址source
Ethernetaddress協(xié)議protocol數(shù)據(jù)data校驗(yàn)和checksum長度Lengthl協(xié)議protocol校驗(yàn)和checksum源IP地址source
IP
address目的IP地址destination
IP
address數(shù)據(jù)data源端口source
port目的端口destination
port序號SEQ應(yīng)答ACK數(shù)據(jù)dataIP分組IP分組TCP包TCP包軟帝信息科技http
Linux中TCP/IP網(wǎng)絡(luò)結(jié)構(gòu)Linux網(wǎng)絡(luò)層次結(jié)構(gòu)IPTCPUDPTCPSLIPEthernetARPINET套接字BSD套接字網(wǎng)絡(luò)應(yīng)用(network
application)用戶內(nèi)核套接字接口協(xié)議層網(wǎng)絡(luò)設(shè)備層軟帝信息科技http
Linux網(wǎng)絡(luò)層次模型用戶進(jìn)程套接字網(wǎng)絡(luò)協(xié)議網(wǎng)絡(luò)設(shè)備軟帝信息科技http
在Linux操作系統(tǒng)中,socket屬于文件系統(tǒng)的一部分,網(wǎng)絡(luò)通信可以被看做是對文件的
。這就使得用戶對網(wǎng)絡(luò)的控制像對文件的控制一樣方便。套接字接口網(wǎng)絡(luò)的socket數(shù)據(jù)傳輸是一種特殊的I/O,socket也是一種文件描述符,它也有類似于對文件操作的函數(shù)調(diào)用,如完成打開、讀/寫等操作。在TCP/IP協(xié)議地址族中,按照提供服務(wù)的層次關(guān)系,套接字有BSD和INET之分。軟帝信息科技http
BSD套接字接口套接字接口(又簡稱套接口)是為方便開發(fā)進(jìn)行TCP/IP程序開發(fā),而為TCP/IP協(xié)議所開發(fā)的一組應(yīng)用程序接口。由于它最早應(yīng)用利大學(xué)的BSD
UNIX中,所以人們又把它稱為BSD
socket(簡稱BSD)。
Linux
BSD套接字支持下列套接字類型:Stream
Stream(流)套接字提供可靠的雙工順序數(shù)據(jù)流,能保證傳輸過程中數(shù)據(jù)不丟失,不被弄混和
。Internet地址中的TCP協(xié)議支持Stream套接字。Datagram
Datagram(數(shù)據(jù)報(bào))套接字提供雙工數(shù)據(jù)傳輸,但與Stream套接字不同,它是不可靠的,不保證信息的到達(dá)。Raw
利用Raw套接字可以直接處理下層協(xié)議(所以叫“Raw”)。軟帝信息科技http
Socket編程基礎(chǔ)客戶機(jī)/服務(wù)器模式在網(wǎng)絡(luò)上大部分的通信都是在客戶機(jī)/服務(wù)器模式下進(jìn)行的,利用socket實(shí)現(xiàn)通信也不例外。在客戶機(jī)/服務(wù)器模式中,將請求服務(wù)的一方稱為客戶端,而將提供服務(wù)的一方稱為服務(wù)器端。socket編程相關(guān)數(shù)據(jù)結(jié)構(gòu)套接口描述符一個(gè)套接口描述符只是一個(gè)整型的數(shù)值,它的定義為intsockfd。(也是一種文件描述符)軟帝信息科技http
Socket編程基礎(chǔ)sockaddr數(shù)據(jù)結(jié)構(gòu)sockaddr數(shù)據(jù)結(jié)構(gòu)中保存著套接口的地址信息,它的定義如下:struct
sockaddr{unsigned
short
sa_family;
/*地址族,定義為AF_
*/char
sa_data[14];
/*14字節(jié)的協(xié)議地址*/};sa_family中可以是其他的很多值,但一般把它賦值為“AF_INET”。sa_data則包括一個(gè)目的地址和一個(gè)端口地址。軟帝信息科技http
Sockaddr_in數(shù)據(jù)結(jié)構(gòu)
sockaddr_in數(shù)據(jù)結(jié)構(gòu)的定義為:
struct
sockaddr_in{short
int
sin_family;/*地址族*/unsigned
short
int
sin_port;/*端*/struct
in_addr
sin_addr;/*IP地址*/unsigned
charsin_zero[8];/*填充0以保持與struct
sockaddr同樣大小*/};這兩個(gè)數(shù)據(jù)類型是等效的,可以相互轉(zhuǎn)換,通常使用sockaddr_in更為方便.軟帝信息科技http
網(wǎng)絡(luò)字節(jié)順序因?yàn)槊恳粋€(gè)機(jī)器
對變量的字節(jié)順序不同(有的系統(tǒng)是
,底位在后,而有的系統(tǒng)是底位在后
),而網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)大家是一定要,順序的。htons():表示“Host
to
NetworkShort”,把主機(jī)地址字節(jié)順序轉(zhuǎn)向網(wǎng)絡(luò)字節(jié)順序(
對短型數(shù)據(jù)操作)
。htonl():表示“Host
to
NetworkLong”,把主機(jī)地址字節(jié)順序轉(zhuǎn)向網(wǎng)絡(luò)字節(jié)順序(
對長型數(shù)據(jù)操作)
。ntohs():表示“Network
to Host
Short”,把網(wǎng)絡(luò)字節(jié)順序轉(zhuǎn)向主機(jī)地址字節(jié)順序(
對短型數(shù)據(jù)操作)
。ntohl():表示“Networkto Host
Long”,把網(wǎng)絡(luò)字節(jié)順序轉(zhuǎn)向主機(jī)地址字節(jié)順序(
對長型數(shù)據(jù)操作)
。軟帝信息科技http
數(shù)據(jù)報(bào)通信對于數(shù)據(jù)報(bào)通信的服務(wù)器端來說,它不必再在一個(gè)端口上偵聽,以等待建立連接,而只需生成一個(gè)端口描述符,并且把這個(gè)端口描述符綁定到本地地址上就可以了。服務(wù)器阻塞,等待
請求bind()recvfrom()socket()bind()recvfrom()socket()數(shù)據(jù)(請求)sendto()客戶機(jī)close()close()軟帝信息科技有18限公司http
sendto()數(shù)據(jù)(應(yīng)答)socket通信常用API函數(shù)socket(
)使用系統(tǒng)調(diào)用socket()來獲得文件描述符,該調(diào)用的格式如下:#include
<sys/types.h>#include
<sys/socket.h>intsocket(int ,
int
type,
int
protocol);軟帝信息科技http
socket函數(shù)說明軟帝信息科技http
bind(
)一旦有了一個(gè)套接口以后,下一步工作就是把套接口綁定到本地計(jì)算機(jī)的某一個(gè)端口上,但如果只想使用connect()則無此必要。下面是系統(tǒng)調(diào)用bind()的定義:#include
<sys/types.h>#include
<sys/socket.h>int
bind(int
sockfd,
struct
sockaddr
*my_addr,
intaddrlen);軟帝信息科技http
bind函數(shù)說明軟帝信息科技http
connect(
)connect()系統(tǒng)調(diào)用由客戶端調(diào)用,它的用法如下:#include
<sys/types.h>#include
<sys/socket.h>int
connect(int
sockfd,
struct
sockaddr
*serv_addr,intaddrlen);軟帝信息科技http
connect函數(shù)說明軟帝信息科技http
sendto()和recvfrom()的主機(jī)上,所因?yàn)閿?shù)據(jù)報(bào)套接口是無連接的,它并不連接到
以在發(fā)送數(shù)據(jù)包之前,必須首先給出目的地址:in
dto(int
sockfd, const
void
*msg,
int
len,unsignedint
flags, const
stuct
sockaddr
*to,
inttolen);intrecvfrom(intsockfd,void
*buf,
intlen,unsignedintflags,
stuctsockaddr
*from,
int
*fromlen);軟帝信息科技http
sendto函數(shù)說明軟帝信息科技http
recvfrom函數(shù)說明軟帝信息科技http
close(
)和shutdown()可以使用close()調(diào)用關(guān)閉連接的套接口文件描述符,它的調(diào)用方式為:close(sockfd);這樣以后就不能再對此套接口進(jìn)行任何的讀/寫操作了。使用系統(tǒng)調(diào)用shutdown(),可有
的控制權(quán)。int
shutdown(int
sockfd,
int
how);第1個(gè)參數(shù)是希望切斷通信的套接口文件描述符。第2個(gè)參數(shù)how值如下:0:不允許再接收數(shù)據(jù)。1:不允許再發(fā)送數(shù)據(jù)。2:發(fā)送和接收數(shù)據(jù)都不允許。shutdown()調(diào)用如果成功返回0,如果失敗則返回-l。軟帝信息科技http
#include
<sys/types.h>#include
<sys/socket.h>#include
<netinet/in.h>#include
<stdio.h>#include
<errno.h>#define
SERVER_PORT8888#define
MAX_MSG_SIZE1024void
udps_respon(int
sockfd){struct
sockaddr_in
addr;int
addrlen,n;char
msg[MAX_MSG_SIZE];網(wǎng)絡(luò)數(shù)據(jù)報(bào)編程/*服務(wù)端程序UDPServer.c*/29軟帝信息科技http
網(wǎng)絡(luò)數(shù)據(jù)報(bào)編程while(1){
/*等待數(shù)據(jù)請求*/n=recvfrom(sockfd,msg,MAX_MSG_SIZE,0,(struct
sockaddr*)&addr,&addrlen);msg[n]=0;/*顯示服務(wù)器端已經(jīng)收到了信息*/fprintf(stdout,"I
have
received%s",msg);/*數(shù)據(jù)回送*/sendto(sockfd,msg,n,0,(struct
sockaddr*)&addr,addrlen);}}軟帝信息科技http
網(wǎng)絡(luò)數(shù)據(jù)報(bào)編程int
main(void){intsockfd;struct
sockaddr_inaddr;sockfd=socket(AF_INET,SOCK_DGRAM,0);if(sockfd<0){fprintf(stderr,"Socket
Error:%s\n",strerror(errno));exit(1);}軟帝信息科技http
網(wǎng)絡(luò)數(shù)據(jù)報(bào)編程bzero(&addr,sizeof(struct
sockaddr_in));addr.sin_family=AF_INET;addr.sin_addr.s_addr=htonl(INADDR_ANY);addr.sin_port=htons(SERVER_PORT);if(bind(sockfd,(struct
sockaddr
*)&addr,sizeof(struct
sockaddr_in))<0){fprintf(stderr,"Bind
Error:%s\n",strerror(errno));exit(1);}udps_respon(sockfd);close(sockfd);}軟帝信息科技http
網(wǎng)絡(luò)數(shù)據(jù)報(bào)編程—客戶端/*客戶端程序UDPClient.c,使用方法UDPClient
ServerIP
ServerPort*/#include<sys/types.h>#include
<sys/socket.h>#include
<netinet/in.h>#include
<errno.h>#include
<stdio.h>#include
<unistd.h>#define
MAX_BUF_SIZE
1024void
udpc_requ(int
sockfd,const
struct
sockaddr_in
*addr,int
len){char
buffer[MAX_BUF_SIZE];軟帝信息科技http
網(wǎng)絡(luò)數(shù)據(jù)報(bào)編程—客戶端int
n;while(1){/*從鍵盤讀入,寫到服務(wù)端*/fgets(buffer,MAX_BUF_SIZE,stdin);sendto(sockfd,buffer,strlen(buffer),0,addr,len);bzero(buffer,MAX_BUF_SIZE);/*從網(wǎng)絡(luò)上讀,寫到屏幕上*/n=recvfrom(sockfd,buffer,MAX_BUF_SIZE,0,NULL,NULL);buffer[n]=0;fputs(buffer,stdout);}}軟帝信息科技http
網(wǎng)絡(luò)數(shù)據(jù)報(bào)編程—客戶端int
main(int
argc,char
**argv){intsockfd,port;struct
sockaddr_i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年山東省初中信息技術(shù)考試練習(xí)題及答案
- 2025年中級衛(wèi)生職稱-主治醫(yī)師-超聲波醫(yī)學(xué)(中級)代碼:346歷年參考題庫含答案解析(5套)
- 醫(yī)學(xué)影像CT技術(shù)科普
- 幼兒衛(wèi)生教育實(shí)施要點(diǎn)
- 2025市場經(jīng)理聘請合同模板
- 中班幼兒衛(wèi)生教育教案設(shè)計(jì)
- 腫瘤藥物治療相關(guān)惡心嘔吐的防治
- 天車電氣安全知識培訓(xùn)課件
- 中醫(yī)護(hù)理腦外傷
- 醫(yī)院感染暴發(fā)三級預(yù)警體系構(gòu)建
- 2025屆中興通訊「未來領(lǐng)軍」人才招聘正式啟動(dòng)筆試參考題庫附帶答案詳解(10套)
- 公司盡調(diào)管理辦法
- DB54T 0496-2025 退化高寒草原免耕補(bǔ)播技術(shù)規(guī)程
- 兩性健康項(xiàng)目合作
- 桌游吧商業(yè)實(shí)施計(jì)劃書
- 江蘇省蘇州市吳中、吳江、相城區(qū)2024-2025學(xué)年七年級下學(xué)期期末考試英語試卷(含答案無聽力原文及音頻)
- 農(nóng)村戶廁衛(wèi)生標(biāo)準(zhǔn)
- 公司人事財(cái)務(wù)管理制度
- 2025-2030中國小分子肽市場供需調(diào)查及發(fā)展趨勢預(yù)測報(bào)告
- 《無人機(jī)概論》高職無人機(jī)應(yīng)用技術(shù)專業(yè)全套教學(xué)課件
- 2025年湖北聯(lián)投招聘筆試沖刺題(帶答案解析)
評論
0/150
提交評論