Pertemuan 2 Socket Introduction

Slides:



Advertisements
Presentasi serupa
Dosen: Nahot Frastian, M.Kom
Advertisements

Aplikasi dan Pemrograman Jaringan
TCP mengatur aliran data gram dari lapisan di atasnya (lapisan aplikasi) hingga lapisan IP, sebagaimana datagram yang datang dari lapisan IP hingga ke.
JAVA Network Programming. Apa itu JAVA? ● Bahasa pemrograman berorientasi objek yang dikembangkan oleh Sun Microsystems sejak tahun ● Dikembangkan.
Pemrograman Jaringan Socket Programming Aurelio Rahmadian.
Konsep Dasar Protokol Jaringan
Referensi Model TCP/IP Pertemuan III. TCP/IP dikembangkan sebelum model OSI ada. Namun demikian lapisan-lapisan pada TCP/IP tidaklah cocok seluruhnya.
Komunikasi antar Proses
Transport Layer Computer Networks Eko Prasetyo Teknik Informatika Universitas Muhammadiyah Gresik 2012.
Pemrograman Client Server
SISTEM TERDISTRIBUSI (SILABUS dan Introduction to Distributed Systems)
Pertemuan 1 Network System Overview I Made Astawa
Pertemuan 5 Server dengan Multi Proses pada Linux
(TRANSMISSION CONTROL PROTOCOL/INTERNET PROTOCOL)
Socket Programming Isbat Uzzin.
IP Address Dedi Hermanto.
Lecture 5 Nonblocking I/O and Multiplexing Erick Pranata © Sekolah Tinggi Teknik Surabaya 1.
Pengembang aplikasi memiliki kemampuan untuk memperbaiki beberapa parameter TCP, seperti buffer dan maksimum ukuran segmen maksimum Socket Programming.
1 Pertemuan 1 Introduction Matakuliah: sistem Operasi Tahun: 2010.
Matakuliah : H0483 / Network Programming Tahun : 2008 Versi : 2.0
Inter Process Communication
Pertemuan 6 Server dengan Multi Thread pada Linux
OSI (Open System Interconnection) Layer
TRANSPORT LAYER PROTOCOLS ( TCP DAN UDP )
UDP Socket Programming
1 Pertemuan 1 Pendahuluan Matakuliah: H0483 – Network Programming Tahun: 2005 Versi: 1.0.
UDP.
OSI LAYER.
Pertemuan 3 ELEMENTARY TCP SOCKETS
DASAR SOCKET PROGRAMMING
TCP Socket Programmning
TCP/IP SOCKET Sujoko.
Sistem Operasi Berbasis Jaringan
1 Pertemuan 10 Pemrograman Jaringan pada Windows dengan VC ) Matakuliah: H0483 – Network Programming Tahun: 2008 Versi: 2.0.
Digunakan dalam pembuatan dasar- dasar hubungan internet Referensi ini sering disebut sebagai referensi model TCP/IP Terdiri atas empat lapisan.
ARSITEKTUR JARINGAN Konsep arsitektur jaringan
1 Pertemuan 7 Name and Address Conversion Matakuliah: H0483 / Network Programming Tahun: 2005 Versi: 1.0.
PROTOKOL LAPISAN APLIKASI
Pertemuan 5 I/O Multiplexing
1 Pertemuan 9 Unix Domain Protocol Matakuliah: H0483 / Network Programming Tahun: 2005 Versi: 1.0.
Arsitektur Protokol.
Referensi Model TCP/IP
Layanan Pengiriman Pada Jaringan
LATIHAN SOAL JARINGAN KOMPUTER
Transport Layer Electronic Engineering Polytechnic Institut of Surabaya – ITS Kampus ITS Sukolilo Surabaya
Jaringan Komputer: Protokol dan Model Lapisan OSI
Referensi Model TCP/IP
Referensi Model TCP/IP (ransmission Control Protocol/Internet Protocol) Eko Riyanto.
TCP & UDP.
PERTEMUAN KE 3 P'HES OSI REFERENCE.
Pertemuan 2 Socket Introduction
TCP/IP Dan IP address Tujuan :
TRANSPORT LAYER PROTOKOL
BAB I                       Mata Kuliah  Sistem Terdistribusi _______________________ PROSES SISTER Oleh : Laseri, S.Kom.
William Stallings Data and Computer Communications 7th Edition
Reperensi Model TCP/IP
Chapter 4 Oktober 2010.
PERTEMUAN KETUJUH Referensi Model DoD.
Referensi Model TCP/IP
Pengantar Jaringan Komputer
Oleh : Laseri, S.Kom BAB I                       Mata Kuliah  Sistem Terdistribusi _______________________ PROSES SISTER.
Referensi Model TCP/IP
Komunikasi antar Proses
OSI LAYER.
ARSITEKTUR DAN PROTOKOL
TCP Socket Programmning
UDP Socket Programming
Referensi Model TCP/IP
Referensi Model TCP/IP
TCP Socket Programming
Transcript presentasi:

Pertemuan 2 Socket Introduction I Made Astawa deastawa@yahoo.com

menjelaskan konsep-konsep Sockets pada Unix, Linux dan Windows Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : menjelaskan konsep-konsep Sockets pada Unix, Linux dan Windows

Socket address structure Byte Ordering Network Byte Order Outline Materi Network API Port Socket history Development Tools Creating Sockets Socket address structure Byte Ordering Network Byte Order Byte manipulation function IPv4 Address Conversion Contoh program

Network Application Programming Interface (Network API). Pelayanan yang disediakan oleh sistem operasi untuk menyediakan interface antara software aplikasi dan protocol

Network API

Generic Programming Interface Network API Network API Generic Programming Interface. Support for message oriented and connection oriented communication. Work with existing I/O services (Contoh: Open) Operating System independence. Generic Programming Interface Mendukung berbagai deretan protocol komunikasi (families). Provide special services for Client and Server

Network API TCP/IP TCP/IP tidak masuk dalam API definition Terdapat banyak macam API untuk menggunakan protokol TCP/IP: Sockets (unix / linux) TLI, XTI ( unix ) Winsock (windows) MacTCP Fungsi yang diperlukan: Menentukan local and remote communication endpoints Initiate a connection Wait for incoming connection Send and receive data Terminate a connection Error handling

PORT NUMBER PORT Numbers Each TCP/IP machine has multiple logical communication channels called ports Setiap saat banyak proses bisa menggunakan UDP atau TCP. TCP atau UDP menggunakan 16-bit positip integer Port Number untuk proses-proses yg berbeda tsb. Nomor Ports mulai dari 0 – 65536. Well known Port : 0 s/d 1023 dikontrol oleh IANA (Internet Assigned Numbers Authority) . Contoh:

Host A Host B PORT NUMBER Process Process Process Process Process

Contoh: PORT NUMBER Port 21 untuk FTP Port 69 untuk TFTP Port 7 untuk echo server Port 9 untuk discard server Port 13 untuk day time server Port 19 untuk chargen server Port 37 untuk Time Port 79 untuk finger Certain of these ports are ``well known''. They are listed in the file /etc/services.

A connection between two machines is uniquely defined by: PORT NUMBER A connection between two machines is uniquely defined by: the protocol (TCP or UDP) the IP address of local machine the port number used on the local machine the IP address of remote machine the port number used on the remote machine

Socket History

SOCKETS SOCKETS A socket is an abstract representation of a communication endpoint. Sockets work with Unix I/O services just like files, pipes & FIFOs.

SOCKETS SOCKETS A socket is an abstract representation of a communication endpoint. Sockets work with Unix I/O services just like files, pipes & FIFOs.

Development Tools Programming Language Operating System Platform Must support network programming APIs Disesuaikan dengan application requirements E.g., C, C++, Java, C#, Python, Visual Basic, etc. Operating System Platform Specific Platform Microsoft Windows, Mac OS, Unix/Linux Cross-Platforms Java, cross-platform library and application frameworks Network Programming API Sockets and its variants (e.g., BSD Sockets, Winsock) Transport Layer Interface (TLI in Unix) Kepemilikan API (e.g., Packet Driver)

Creating Sockets Creating a Socket Menggunakan System call Socket(). Sintak : int socket( family, type, protocol); family : protocol family seperti tabel dibawah. type : type of service / tipe protokol seperti tabel dibawah protocol : specific protocol (biasanya 0, yang artinya protocol yang digunakan seperti tabel dibawah). Header File : #include <sys/types.h> #include <sys/socket.h> Contoh: sd = socket(AF_INET, SOCK_STREAM, 0);

Protocol Family Description Creating Sockets Protocol Family Description

Creating Sockets

Creating Sockets socket() system call The socket() system call returns a socket descriptor (small integer) or a -1 on error. socket() allocates resources needed for a communication endpoint TCP/IP requires an IP address and a port number for each endpoint address.

Creating Sockets POSIX Data Type

Creating Sockets Generic Socket Address Structure: <sys/socket.h> struct sockaddr { uint8_t sa_len; sa_family_t sa_family; char sa_data[14]; };

Creating Sockets socket address structure selalu di-pass “by reference” jika sebagai argument pada socket functions. Contoh: int bind(int,struct sockaddr*,socklen_t) struct sockaddr_in server; /* IP4 */ bind(sockfd,(struct sockaddr *)&server, sizeof(server));

Creating Sockets IP4 Socket Address Structure struct sockaddr_in { uint8_t sin_len; sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr; char sin_zero[8]; }; struct in_addr { in_addr_t s_addr; Alamat IP4 dan Nomor Port TCP atau UDP selalu disimpan dalam stuktur network byte order.

Byte Ordering Arsitektur komputer yang berbeda bisa saja menggunakan byte ordering yg berbeda untuk merepresentasikan multibyte values. Contoh 16 bit bilangan integer (2 byte): Address A Low Byte High Byte Address A+1 High Byte Low Byte

Byte Ordering Little-Endian IBM 80x86 DEC VAX DEC PDP-11 Big-Endian Motorola 68000 Sun Low Byte High Byte High Byte Low Byte Addr A Addr A+1 Addr A Addr A+1

Byte Ordering Misalkan sebuah komputer yang menggunakan konsep Big Endian mengirim data 16 bit integer dengan nilai 2: 0000000000000010 Sebuah komputer yang menggunakan konsep Little Endian akan mengartikan data tersebut dengan nilai 512: 0000001000000000

Network Byte Order = Big-Endian Architecture Byte Ordering Network Byte Order = Big-Endian Architecture

Network Byte Order Network Byte Order Urutan byte yang sudah pasti, khususnya untuk data yang lebih dari satu byte, dimana LSB menempati lokasi/address memori yang lebih besar dibandingkan MSB. Nilai yg disimpan pada “sockaddr_in” harus dalam “network byte order”, seperti : sin_port : untuk menyimpan TCP atau UDP port number. sin_addr : untuk menyimpan 32-bit IP4 address.

Network Byte Order Network Byte Order Function Ada dua cara untuk menyimpan 2-byte data di memori: little-endian and big-endian => Host byte order. Fungsi-fungsi untuk meng-konversi dari host byte order ke network byte order umumnya diawali dengan huruf: ‘h’ : host byte order ‘n’ : network byte order ‘s’ : short (16bit) ‘l’ : long (32bit)

Network Byte Order Contoh Fungsi yg mengembalikan Network Byte Order : uint16_t htons(uint16_t); uint32_t htonl(uint32_t); Contoh Fungsi yg mengembalikan Host Byte Order : - uint16_t ntohs(uint16_t); - uint32_t ntohl(uint32_t);

Byte Manipulation Functions #include <string.h> void bzero(void *dst, size_t nbytes); void bcopy(const void *src, void *dest, size_t nbytes); int bcmp(const void *ptr1, const void *ptr2, size_t nbytes); Contoh: main(){ char x[10]; int i; for(i=0; i<10;i++) x[i]=65+i; bzero(x,4); for(i=0;i<10;i++) printf("%c\n",x[i]); }

IPv4 Address Conversion int inet_aton( char *, struct in_addr *); Fungsi inet_aton() berfungsi untuk mengkonversi “string dotted-decimal IP address” menjadi nilai 32-bit dalam format “network byte order”. Fungsi ini mengembalikan nilai 1 jika sukses, dan mengembalikan nilai 0 jika ada error. char *inet_ntoa(struct in_addr); Fungsi inet_ntoa() berfungsi untuk mengkonversi nilai/alamat IP dlm “network byte ordered” menjadi string “ dotted-decimal IP address”.

Contoh program #include <stdio.h> #include <sys/types.h> int main() { union{ short s; char c[sizeof(short)]; } un; un.s=0x0102; if(sizeof(short) == 2){ if(un.c[0]==1 && un.c[1]==2) printf("big-endian\n"); else if(un.c[0] == 2 && un.c[1] == 1)printf("little-endian\n"); else printf("unknown\n"); } else printf("sizeof(short) = %d\n",sizeof(short)); return(0);

Contoh program #include <stdio.h> #include <netinet/in.h> int main() { unsigned int a; unsigned long int b; printf("Network byte order = %x\n", a=htons(0x1234)); printf("Network byte order = %x\n", b=htonl(0x12345678)); printf("Host byte order = %x\n", ntohs(a)); printf("Host byte order = %x\n", ntohl(b)); return(1); }

Contoh program #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> main() { unsigned long x; char ss[80]; struct sockaddr_in ina; x = inet_addr("10.21.42.95"); ina.sin_addr.s_addr=x; printf("IP address (network byte order) : %ld\n",x); strcpy(ss, inet_ntoa(ina.sin_addr)); printf("String dot-decimal IP address : %s\n",ss); return(0); }

Contoh program #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main() { char *addr1, *addr2; struct sockaddr_in ina1, ina2; ina1.sin_addr.s_addr = inet_addr("10.21.42.95"); ina2.sin_addr.s_addr = inet_addr("10.21.42.205"); addr1 = inet_ntoa(ina1.sin_addr); addr2 = inet_ntoa(ina2.sin_addr); printf("IP address : %s\n",addr1); printf("IP address : %s\n",addr2); return(0); }

Contoh program #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main() { char addr1[80], addr2[80]; struct sockaddr_in ina1, ina2; ina1.sin_addr.s_addr = inet_addr("10.21.42.95"); ina2.sin_addr.s_addr = inet_addr("10.21.42.205"); strcpy(addr1, inet_ntoa(ina1.sin_addr)); strcpy(addr2, inet_ntoa(ina2.sin_addr)); printf("IP address : %s\n",addr1); printf("IP address : %s\n",addr2); return(0); }

Contoh program #include <stdio.h> #include <sys/socket.h> inet_atoa(): Merubah IP addressesdari string dots-decimal IP address ke struct in_addr Sintak: int inet_aton(const char *cp, struct in_addr *inp); Mengembalikan nilai non-zero jika sukses, dan return zero jika error. #include <stdio.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main() { struct sockaddr_in addr; inet_aton("192.168.90.25",&addr.sin_addr); printf("IP=192.168.90.25\n"); printf("IP=%x.%x.%x.%x\n",192,168,90,25); printf("addr=%d (desimal)\n",addr.sin_addr.s_addr); printf("addr=%x (hexadesimal)\n",addr.sin_addr.s_addr); return 0; }

Contoh program Hasil: IP=192.168.90.25 IP=c0.a8.5a.19 addr=425371840 (desimal) addr=195aa8c0 (hexadesimal) NB: inet_aton() sering tdk disupport O/S tertentu => gunakan inet_addr() inet_aton("192.168.90.25",&addr.sin_addr); sama artinya dengan: addr.sin_addr.s_addr = inet_addr("192.168.90.25");

LATIHAN Sebuah komputer dengan arsitekturnya menggunakan byte ordering little-endian, dan pada komputer tersebut dijalankan program, dan didalam program terdapat statement x=htons(2); berapakah nilai x ? 2. Sebuah komputer dengan arsitekturnya menggunakan byte ordering little-endian, dan pada komputer tersebut dijalankan program, dan didalam program terdapat statement x=ntohs(2); 3. Sebuah komputer dengan arsitekturnya menggunakan byte ordering big-endian, dan pada komputer tersebut dijalankan program, dan didalam program terdapat statement x=htons(2); 4. Sebuah komputer dengan arsitekturnya menggunakan byte ordering big-endian, dan pada komputer tersebut dijalankan program, dan didalam program terdapat statement x=ntohs(2);