Download presentation
Presentation is loading. Please wait.
Published byΑθορ Ταμτάκος Modified over 5 years ago
1
Outline Communications in Distributed Systems Socket Programming
5/21/2019 COP5611
2
Distributed Systems A distributed system is a collection of independent computers that appears to its users as a single coherent system Independent computers mean that they do not share memory or clock The computers communicate with each other by exchanging messages over a communication network 5/21/2019 COP5611
3
Distributed Systems – cont.
5/21/2019 COP5611
4
Necessity of Protocols
Due to the absence of shared memory, all communication in distributed systems is based on exchanging messages at low level When process A wants to communicate with process B, it builds a message in its own space and then executes a system call to send it to B To prevent chaos, A and B must agree on the meaning of the bits being sent 5/21/2019 COP5611
5
Layered Protocols Layers, interfaces, and protocols in the OSI model.
5/21/2019 COP5611
6
Layered Protocols – cont.
A typical message as it appears on the network. 5/21/2019 COP5611
7
Physical Layer It is concerned how to transmit 0’s and 1’s
There are technical issues involved such as unidirectional or bidirectional These issues are not interesting to us 5/21/2019 COP5611
8
Data Link Layer Discussion between a receiver and a sender in the data link layer. 5/21/2019 COP5611
9
Network Layer The primary task of a network layer is routing
The most widely used network protocol is the connection-less IP (Internet Protocol) Each IP packet is routed to its destination independent of all others A connection-oriented protocol is gaining popularity Virtual channel in ATM networks 5/21/2019 COP5611
10
Transport Layer This layer is the last part of a basic network protocol stack In other words, this layer can be used by application developers An important aspect of this layer is to provide end-to-end communication The Internet transport protocol is called TCP (Transmission Control Protocol) The Internet protocol also supports a connectionless transport protocol called UDP (Universal Datagram Protocol) 5/21/2019 COP5611
11
Client-Server TCP Normal operation of TCP. Transactional TCP. 2-4
5/21/2019 COP5611
12
Higher Level Protocols
In the OSI model, there are three additional layers above the transport layer In practice, only the application layer is ever used In the Internet protocol suite, everything above the transport layer is grouped together In the face middleware systems, it has two layers above the transport layer 5/21/2019 COP5611
13
Application Protocols
File Transfer Protocol (FTP) It defines a protocol for transferring files between a client and a server HyperText Transfer Protocol (HTTP) Designed to remotely manage and handle the transfer of web pages Mainly used by web servers and browsers It is also used in other applications such as Java’s RMI (Remote Method Invocations) 5/21/2019 COP5611
14
HTTP Methods Operations supported by HTTP. Operation Description Head
Request to return the header of a document Get Request to return a document to the client Put Request to store a document Post Provide data that is to be added to a document (collection) Delete Request to delete a document 5/21/2019 COP5611
15
Application Protocols – cont.
HTTPS HTTP protocol running on Transport Layer Security (TLS), originally known as Secure Socket Layer TLS is an application-independent security protocol that is logically on top of the transport layer TLS implementations are usually based on TCP 5/21/2019 COP5611
16
Middleware Protocols An adapted reference model for networked communication. 5/21/2019 COP5611
17
Sockets Socket primitives for TCP/IP. Primitive Meaning Socket
Create a new communication endpoint Bind Attach a local address to a socket Listen Announce willingness to accept connections Accept Block caller until a connection request arrives Connect Actively attempt to establish a connection Send Send some data over the connection Receive Receive some data over the connection Close Release the connection 5/21/2019 COP5611
18
Sockets – cont. Connection-oriented communication pattern using sockets. 5/21/2019 COP5611
19
Socket Programming Socket Programming
Based on TCP/UDP. TCP Transmission control protocol. connection-oriented, reliable, full duplex, byte stream service Interface: socket, bind, listen, accept, connect, read, write, close. 5/21/2019 COP5611
20
An analogy Socket: telephone
Bind: assign telephone number to a telephone Listen: turn on the ringer so that you can hear the phone call Connect: dial a phone number Accept: answer the phone Read/write: talking Close: Hang-up 5/21/2019 COP5611
21
The Basics To send: To receive: TCP endpoint: Socket, connect write
Socket, bind, listen, accept read TCP endpoint: IP address + port number 5/21/2019 COP5611
22
Basic TCP Sockets #include <sys/socket.h>
int socket(int family, int type, int protocol); Family: AF_INET (PF_INET). Type: SOCK_STREAM (TCP) SOCK_DGRAM (UDP) Protocol: = 0 Return descriptor, -1 on error. 5/21/2019 COP5611
23
Connect #include <sys/socket.h>
int connect(int sockfd, const struct sockaddr* servaddr, socklen_t addrlen); Servaddr: socket address structure (ip address and port) 5/21/2019 COP5611
24
Socket Address structure:
struct in_addr { in_addr_t s_addr; } 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]; Always use sockaddr_in type for manipulation and convert it to sockaddr. See example1.c. struct sockaddr { uint8_t sa_len; sa_family_t sa_family; char sa_data[14]; } 5/21/2019 COP5611
25
Bind Client does not have to bind, system assigns a dynamic port number. #include <sys/socket.h> int bind(int sockfd, const struct sockaddr &myaddr, socklen_t addlen); 5/21/2019 COP5611
26
Myaddr Myaddr (address, port) = (INADDR_ANY, 0) = (INADDR_ANY, !0)
system assigns addr and port. = (INADDR_ANY, !0) system selects addr, user selects port =(Local IP address, 0) user selects addr, system selects port =(Local IP address,!0) user selects both addr and port See example2.c 5/21/2019 COP5611
27
Listen Convert a socket into a passive socket
#include <sys/socket.h> int listen(int sockfd, int backlog) Backlog: number of connections that the kernel should queue for the socket. 5/21/2019 COP5611
28
Accept Accept Blocking by default #include <sys/socket.h>
int accept (int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen); Return client’s address in cliaddr See example2.c 5/21/2019 COP5611
29
sin_port and sin_addr must be in network byte order.
What happen when we run example2.c as server on diablo and example1.c as client on linprog? Sockaddr_in revisit sin_port and sin_addr must be in network byte order. Check example3.c, what is the difference between diablo and quake? 5/21/2019 COP5611
30
Functions to Convert Byte Orders
#include <netinet/in.h> uint16_t htons(uint16_t host16bitvalue); uint32_t htonl(uint32_t host32bitvalue); uint16_t ntohs(uint16_t net16bitvalue); Uint32_t ntohl(uint32_t net32bitvalue); 5/21/2019 COP5611
31
Some Useful Functions Some byte manipulation functions:
#include <strings.h> Void *memset(void *dst, int c, size_t len); Void *memcpy(void *dst, void *src, size_t nbytes); Void *memcmp(const void *ptr1, const void *ptr2, size_t nbytes); Address conversion functions inet_aton/inet_addr/inet_ntoa 5/21/2019 COP5611
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.