outline n n Socket introduction Network OSI layer

  • Slides: 19
Download presentation

outline n n Socket introduction Network OSI layer How to do socket? example

outline n n Socket introduction Network OSI layer How to do socket? example

Network OSI layer n Internet為全世界最廣為接受的網路協 定,幾乎任何網路都支援Internet IP網 路層協定,舉凡Ethernet、Token Ring、 FDDI、Serial Line的SLIP (Serial Line IP)、PPP

Network OSI layer n Internet為全世界最廣為接受的網路協 定,幾乎任何網路都支援Internet IP網 路層協定,舉凡Ethernet、Token Ring、 FDDI、Serial Line的SLIP (Serial Line IP)、PPP (Point-To-Point) ,甚 至IBM 的SNA網路、Digital 的DECNET網 路 都訂定 有與IP網路層協定共通的網 路傳輸協定 http: //dns-learning. twnic. net. tw/internet/intro 5. html

應用層 (Application Layer) n 各種網路應用如 telnet、Ftp、WWW、 Email、News、BBS等。

應用層 (Application Layer) n 各種網路應用如 telnet、Ftp、WWW、 Email、News、BBS等。

How to do socket? n n n 開啟 Socket介面 Binding Socket地址 Connection的建立 傳輸網路資料 關閉

How to do socket? n n n 開啟 Socket介面 Binding Socket地址 Connection的建立 傳輸網路資料 關閉 Socket介面

server Client

server Client

Binding Socket地址 n Socket 出入口需Binding到TCP address, 網路上的電腦主 機才可以依據使用者所 指定的TCP address,建立資料傳送的通 道。TCP address 包含IP address

Binding Socket地址 n Socket 出入口需Binding到TCP address, 網路上的電腦主 機才可以依據使用者所 指定的TCP address,建立資料傳送的通 道。TCP address 包含IP address (如 140. 115. 17. 111) 及TCP Port number。 我們熟悉的網路應用: telnet 140. 115. 17. 111 23與ftp 140. 115. 17. 111 21,均需依據所指定的 host IP與 Port,建立連接、傳輸資料

example: n server主機執行命令例:serv & sock = socket(AF_INET, SOCK_STREAM, 0); name. sin_family = AF_INET; name.

example: n server主機執行命令例:serv & sock = socket(AF_INET, SOCK_STREAM, 0); name. sin_family = AF_INET; name. sin_addr. s_addr = INADDR_ANY; name. sin_port = 5000; bind(sock, (struct sockaddr *)&name, sizeof (name) ); msgsock = accept(sock, (struct sockaddr *)0, (int *)0); rval = read(msgsock, buf, sizeof(buf)); printf("The Message is %s \n", buf); . . . . Close(msgsock); close(sock);

Client主機 執行命令例:clnt sparc 105000 n sock = socket(AF_INET, SOCK_STREAM, 0); server. sin_family = AF_INET;

Client主機 執行命令例:clnt sparc 105000 n sock = socket(AF_INET, SOCK_STREAM, 0); server. sin_family = AF_INET; hp=gethostbyname(argv[1]); bcopy((char*)hp->h_addr, (char*) &server. sin_addr, hp->h_length); server. sin_port = 5000; connect(sock, (struct sockaddr*)&server, sizeof(server)) wrval = write(sock, "Hello!", 6 ); close(sock);