Application Programming Interface (API): specifies a set of functions or routines that accomplish a specific task or are allowed to interact with a specific software component
Message passing: is a technique for invoking behavior (i.e., running a program) on a computer. In contrast to the traditional technique of calling a program by name, message passing uses an object model to distinguish the general function from the specific implementations
Direct Naming: Process names of source and destination serve as identifiers(a pair of source and destination systems defines a channel)
Packet Switching: is a digital networking communications method that groups all transmitted data – regardless of content, type, or structure – into suitably sized blocks, called packets
Circuit Switching: is a methodology of implementing a telecommunications network in which two network nodes establish a dedicated communications channel (circuit) through the network before the nodes may communicate
Asynchronous Message Passing: message passing is done using buffers with unbounded capacity where sender may race ahead an unbounded number of steps, sender never blocks & receiver blocks on empty queue.
Synchronous Message Passing: No buffering system is available between sender and receiver. A sender blocks until receiver is ready to receive & a receiver blocks until sender is ready to send
Buffered Message Passing: Buffers with bounded, finite capacity. Each sender may race ahead a finite, bounded number of steps and a sender only blocks on full buffer while a receiver blocks on an empty buffer
All the above images are examples of Hardware Sockets/Ports useful for connecting devices, but what exactly are we concerned about ?????
Socket is an endpoint of an inter-process communication flow across a computer network.
Sockets originated from BSD UNIX but are also present in most other versions of UNIX, including Linux as well as Windows and the Macintosh OS.
Sockets need to be bound to a Port Number and an Internet Address in order to be useable for sending and receiving messages
Port: is an application-specific or process-specific software construct serving as a communications endpoint in a computer’s host operating system.
A port is associated with an IP address of the host, as well as the type of protocol used for communication
It is identified for each process and protocol by a 16-bit number commonly known as PORT NUMBER
Well Known PORT NUMBERS: FTP :: 20, 21 TELNET :: 23 SMTP :: 25 HTTP :: 80 POP3 :: 110 IMAP :: 143 SNMP :: 161 HTTPS :: 443
Socket: It is a class used for creating the end point for communication
ServerSocket: A server socket waits for requests to come in over the network. It performs some operation based on that request, and then possibly returns a result to the requester.
DatagramSocket: A datagram socket is the sending or receiving point for a packet delivery service. Each packet sent or received on a datagram socket is individually addressed and routed. Multiple packets sent from one machine to another may be routed differently, and may arrive in any order.
MulticastSocket: The multicast datagram socket class is useful for sending and receiving IP multicast packets. A MulticastSocket is a (UDP) DatagramSocket, with additional capabilities for joining "groups" of other multicast hosts on the internet.
A multicast group is specified by a class D IP address and by a standard UDP port number. Class D IP addresses are in the range 188.8.131.52 to 184.108.40.206, inclusive. The address 220.127.116.11 is reserved and should not be used.
Students can write program using C language to build IPC with UDP
Students can write program using C language to build IPC with TCP
External data representation (XDR): An agreed standard for the representation of data structures and primitive values
Marshalling: is a process of assembling a collection of data items in a form suitable for transmission Unmarshalling: is a process of disassembling and recovery of original data items.
Remote Object Reference is an identifier for a remote object that is valid throughout a distributed system
Multipurpose Internet Mail Extension (MIME): is an Internet standard that extends the format of email to support: Text in character sets other than ASCII Non-text attachments Message bodies with multiple parts Header information in non-ASCII character sets
MIME was designed mainly for SMTP protocol, but its use today has grown beyond describing the content of email and now often includes descriptions of content type in general, including for the web (see Internet media type) and as a storage for rich content in some commercial products (e.g., IBM Lotus Domino and IBM Lotus Quickr).
Multicast: this is an operation that sends a single message from one process to each of the members of a group of processes, usually in such a way that the membership of the group is transparent to the sender
IP multicast: allows the sender to transmit a single IP packet to a set of computers that form a multicast group
Multicast Routers: Internet multicasts make use of multicast routers, which forward single datagrams to routers on other networks, where they are again multicast to local members. To limit the distance of propagation of a multicast datagram, the sender can specify the number of routers it is allowed to pass – called the time to live, or TTL for short
Multicast Address Allocation: The management of the Class D address space is reviewed annually, with current practice documented in RPC 3171 as Local Network Control Block (18.104.22.168 to 22.214.171.124), for multicast traffic within a given local network. Internet Control Block (126.96.36.199 to 188.8.131.52). Ad Hoc Control Block (184.108.40.206 to 220.127.116.11), for traffic that does not fit any other block. Administratively Scoped Block (18.104.22.168 to 22.214.171.124), which is used to implement a scoping mechanism for multicast traffic (to constrain propagation).
Any port used for creating a MulticastSocket, can be used for Multicasting the messages across the group