Network Programming in C Lecture 6 Network Programming
- Slides: 41
Network Programming in C Lecture 6: Network Programming (1) ネットワークプログラミング 第 6回「ネットワークとプログラミング(1)」 20 10年秋学期 Rodney Van Meter
今期の授業スケジュール(予定) 第1回 9/28: Introduction / イントロダクション 第2回 10/5:C Basics~Functions, Variables, Data Types・ Makefiles 第3回 10/12:C Basics~Command Line Arguments ・ Structures ・ Pointers 第4回 10/19:C Basics~Pointers & Arrays ・ Lists 第5回 10/26: file I/O・ Network Protocols 第6回 11/2: Network Programming (1) 第7回 11/9: Network Programming (2) 第8回 11/16: Network Programming (3) 第9回 11/30: Applied Network Programming (1) 第10回 12/7: Applied Network Programming (2) 第11回 12/14: Work on Projects 第1 2回 12/21: Work on Projects 第13回 1/19: Final Presentations!!!
Try My Message Server (Simpler even than the attendance server) IP address: 2001: 200: 0: 8801: 20 c: 29 ff: fe 27: 6 c 98 Port : 12345 telnet! 課題:サーバ作成
Outline for Today Projects Tools Sockets Practice/Homework Make your own TCP “Success!” server
Wireshark
OSI Model & Internet Architecture アプリケーション層 Application Layer プレゼンテーション層 Presentation Layer セッション層 Web XML Webサービス Email NNTP ・・・ Messaging File transfer File sharing TCP UDP Session Layer トランスポート層 Transport Layer ネットワーク層 IP Network Layer データリンク層 Data Link Layer Ethernet 物理層 x. DSL Optical fiber 無線LAN (WLAN) Physical Layer 8
Protocol Stack & Encapsulation Sender side Each layer in stack adds headers as necessary Receiver side Each layer extracts headers, processes, then sends to higher layer in stack n. b. : Messages may not be 1: 1! ex:HTTP hdr Application アプリケーション Data データ TCP hdr IP hdr Ethernet Frame phy. signal TCP IP IP Ethernet/100 M CAT 5 e sender side receiver side
ネットワークアプリケーションとは? process TCP transport layer UDP IP ICMP process ARP Application layer IGMP network layer RARP hardware interface media data link layer
Client-Server Model Primary model used on the Internet Server (e. g. , web server, DNS server, file server) Waits to receive communication from client 反復サーバ/平行サーバ Client (e. g. , web browser) Initiates connection to server Client Server サービス要求 Time サービス提供
Port & Socket Port Access point for transport layer TCP/UDP both have Appears in packet headers Socket “Adapter” that connects a software process to a network port Much like a file descriptor Internal to your computer
ソケット(Socket) Process-to-process data I/O entrance/exit Allows process to send/receive like a file descriptor Process socket Process
socket() System Call int socket(int family, int type, int proto) family defines choice of protocol family AF_INET 6 AF_LOCAL AF_ROUTE IPv 4 protocol IPv 6 protocol UNIX Domain Socket routing socket (経路制御ソケット) (special) Type defines how data is managed SOCK_STREAM as a stream (TCP) SOCK_DGRAM as individual datagrams (UDP) SOCK_RAW raw packets Proto is 0, except for RAW
socket() System Call Return value success: socket descriptor number failure: -1 same as with file descriptors Code usually looks like… listenfd = socket(AF_INET, SOCK_STREAM, 0) AF_INETの場合の利用されるIPv 4の上位層 SOCK_STREAM TCP SOCK_DGRAM UDP SOCK_RAW なし
bindした状態 Proto Local. Address TCP *. A クライアント プロセス Foreign. Address *. * Port A State Closed サーバ プロセス Port B Port C ホストA IP Address: xx. xx. ホストB IP Address: xx. xx.
Datagram example (UDP) Server socket() Client bind() socket() recvfrom() Block until Data from client bind() Data (request) sendto() Process request sendto() Data (reply) recvfrom()
Stream example (TCP) Server socket() bind() Client listen() socket() accept() Block until connect recv() Process request send() Connection Establishmt. Data (request) connect() send() Data (reply) recv() 暗黙にbind()
エンディアン変換 u_long htonl(u_long hostlong); u_short htons(u_short hostshort); u_long ntohl(u_long netlong); u_short ntohs(u_short netshort);
“Modern” naming getaddrinfo() See: Gilligan et al. , RFC 2553 Metz, “Protocol Independence. . . , ” Free. Nix 2000 Yoshifuji et al. , “Linux IPv 6 Networking, ” Linux Symposium 2003 More next week, when we start clients
Important Structure #include<netinet/in. h> struct sockaddr_in{ u_char sin_len; ズ*/ u_char sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; } /*IP addressのサイ /*AF_INET etc*/ /*port num*/ /*IP address*/ /*padding*/
Important functions socket bind sendto recvfrom UDP Server UDP client socket() bind() sendto() Data (request) recvfrom() sendto() recvfrom() Data (reply)
socket int socket(int domain, int type, int protocol); (例) int sd; sd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) AF_UNIX , SOCK_STREAM, IPPROTO_TCP SOCK_RAW, IPPROTO_ICMP
bind int bind(int sockfd, struct sockaddr *addr, int addrlen); (例) struct sockaddr_in cl_addr; memset((void *)&cl_addr, 0, sizeof(cl_addr)); cl_addr. sin_family = AF_INET; cl_addr. sin_port = htons(0); cl_addr. sin_addr. s_addr = htonl(INADDR_ANY); /* local host*/ bind(sd, (struct sockaddr *)&cl_addr, sizeof(cl_addr))
Example of Old-Style Code for filling in sockaddr struct sockaddr_in sv_addr; memset((void *)&sv_addr, 0, sizeof(sv_addr)); sv_addr. sin_family = AF_INET; sv_addr. sin_port = htons(? ? ? ); inet_aton(? ? ? , &sv_addr. sin_addr);
Using sendto() ssize_t sendto(int s, const void *msg, size_t len, int flags, const struct sockaddr *to, int tolen); (例) if (sendto(sd, (char *)&msg, sizeof(msg), 0 , (struct sockaddr *)&sv_addr, sizeof(sv_addr)) < 0) { perror("sendto"); exit(-1); }
Using recvfrom() ssize_t recvfrom() (int s, void *buf, size_t len, int flags, struct sockaddr *from, int *fromlen); (例) recvlen = recvfrom(sd, (void *)buf, 1024, 0, (struct sockaddr *)&sv_addr, &svadlen);
#include #include <sys/types. h> <sys/socket. h> <netinet/in. h> <netdb. h> <stdio. h> #define BUFMAX 1024 int main(int argc, char *argv[]){ int sd; int cc, svadlen; char buf[BUFMAX] char rmsg[BUFMAX]; struct sockaddr_in cl_addr, sv_addr; /* socketの作成 */ ? ? /* socketに名前をつける */ ? ? /* サーバのソケットアドレスの設定 */ ? ? /* 処理ルーチン(メッセージの送信,受信) */ ? ? return 0; }
Homework Create your own TCP “Success!” message server.
- 01:640:244 lecture notes - lecture 15: plat, idah, farad
- C programming lecture
- Graph neural network lecture
- Network management principles
- Perbedaan linear programming dan integer programming
- Greedy programming vs dynamic programming
- Components of system programming
- Linear vs integer programming
- Definisi integer
- Echo client server
- Value result arguments
- Android network programming
- Network model linear programming
- Raw socket in networking
- Ipc java
- Weicc
- File and record locking in network programming
- Stevens unix network programming
- Comparison between virtual circuit and datagram network
- Types of network topology
- Features of peer to peer network and client server network
- Network systems design using network processors
- Network centric computing and network centric content
- Circuit switched vs packet switched
- Project procurement management lecture notes
- Lecture about sport
- Healthy lifestyle wrap up lecture
- Nihilism vs existentialism
- Meaning of this
- Randy pausch the last lecture summary
- Tensorflow lecture
- Theology proper lecture notes
- Strategic management lecture
- Geology lecture series
- Social psychology lecture
- In text citation for a lecture
- Public sector accounting pdf notes
- 4 ps of project management
- Reinforcement lap lengths eurocodes
- Electricity and magnetism lecture notes
- Physics 111 lecture notes
- What is a harmonic wave in physics