Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah...

87
Processes (Part III) Amir H. Payberah [email protected] Amirkabir University of Technology (Tehran Polytechnic) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 1 / 50

Transcript of Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah...

Page 1: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Processes (Part III)

Amir H. [email protected]

Amirkabir University of Technology(Tehran Polytechnic)

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 1 / 50

Page 2: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Inter-Process Communication(IPC)

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Page 3: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 3 / 50

Page 4: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Socket

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 4 / 50

Page 5: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Let’s First Review The BasicConcepts of TCP/IP

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 5 / 50

Page 6: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Internetworking

I An internetwork (internet (with a lowercase i)) is a network of com-puter networks.

I Subnetwork refers to one of the networks composing an internet.

I An internet aims to hide the details of different physical networks,to present a unified network architecture.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 6 / 50

Page 7: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Internetworking

I An internetwork (internet (with a lowercase i)) is a network of com-puter networks.

I Subnetwork refers to one of the networks composing an internet.

I An internet aims to hide the details of different physical networks,to present a unified network architecture.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 6 / 50

Page 8: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Internetworking

I An internetwork (internet (with a lowercase i)) is a network of com-puter networks.

I Subnetwork refers to one of the networks composing an internet.

I An internet aims to hide the details of different physical networks,to present a unified network architecture.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 6 / 50

Page 9: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

The Internet

I TCP/IP has become the dominant protocol for the internetworking.

I The Internet (with an uppercase I) refers to the TCP/IP internetthat connects millions of computers globally.

I The first widespread implementation of TCP/IP appeared with4.2BSD in 1983.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 7 / 50

Page 10: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

The Internet

I TCP/IP has become the dominant protocol for the internetworking.

I The Internet (with an uppercase I) refers to the TCP/IP internetthat connects millions of computers globally.

I The first widespread implementation of TCP/IP appeared with4.2BSD in 1983.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 7 / 50

Page 11: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

The Internet

I TCP/IP has become the dominant protocol for the internetworking.

I The Internet (with an uppercase I) refers to the TCP/IP internetthat connects millions of computers globally.

I The first widespread implementation of TCP/IP appeared with4.2BSD in 1983.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 7 / 50

Page 12: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Networking Protocols and Layers

I A networking protocol is a set of rules defining how information isto be transmitted across a network.

I Networking protocols are generally organized as a series of layers.

I Each layer building on the layer below it to add features that aremade available to higher layers.

I Transparency: each protocol layer shields higher layers from theoperation and complexity of lower layers.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 8 / 50

Page 13: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Networking Protocols and Layers

I A networking protocol is a set of rules defining how information isto be transmitted across a network.

I Networking protocols are generally organized as a series of layers.

I Each layer building on the layer below it to add features that aremade available to higher layers.

I Transparency: each protocol layer shields higher layers from theoperation and complexity of lower layers.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 8 / 50

Page 14: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Networking Protocols and Layers

I A networking protocol is a set of rules defining how information isto be transmitted across a network.

I Networking protocols are generally organized as a series of layers.

I Each layer building on the layer below it to add features that aremade available to higher layers.

I Transparency: each protocol layer shields higher layers from theoperation and complexity of lower layers.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 8 / 50

Page 15: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Networking Protocols and Layers

I A networking protocol is a set of rules defining how information isto be transmitted across a network.

I Networking protocols are generally organized as a series of layers.

I Each layer building on the layer below it to add features that aremade available to higher layers.

I Transparency: each protocol layer shields higher layers from theoperation and complexity of lower layers.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 8 / 50

Page 16: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

TCP/IP Protocol Suite

I The TCP/IP protocol suite is a layered networking protocol.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 9 / 50

Page 17: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

TCP/IP Protocol Layers

I Data-Link layer

I Network layer (IP)

I Transport layer (TCP, UDP)

I Application

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 10 / 50

Page 18: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Encapsulation

I Encapsulation: the information passed from a higher layer to a lowerlayer is treated as opaque data by the lower layer.

• The lower layer does not interpret information from the upper layer.

I When data is passed up from a lower layer to a higher layer, aconverse unpacking process takes place.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 11 / 50

Page 19: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Encapsulation

I Encapsulation: the information passed from a higher layer to a lowerlayer is treated as opaque data by the lower layer.

• The lower layer does not interpret information from the upper layer.

I When data is passed up from a lower layer to a higher layer, aconverse unpacking process takes place.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 11 / 50

Page 20: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Data-Link Layer (1/3)

I It is concerned with transferring data across a physical link in anetwork.

I It consists of the device driver and the hardware interface (networkcard) to the underlying physical medium, e.g., fiber-optic cable.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 12 / 50

Page 21: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Data-Link Layer (1/3)

I It is concerned with transferring data across a physical link in anetwork.

I It consists of the device driver and the hardware interface (networkcard) to the underlying physical medium, e.g., fiber-optic cable.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 12 / 50

Page 22: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Data-Link Layer (2/3)

I The data-link layer encapsulates datagrams from the network layerinto units, called frames.

I It also adds each frame a header containing the destination addressand frame size.

I The data-link layer transmits the frames across the physical link andhandles acknowledgements from the receiver.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 13 / 50

Page 23: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Data-Link Layer (2/3)

I The data-link layer encapsulates datagrams from the network layerinto units, called frames.

I It also adds each frame a header containing the destination addressand frame size.

I The data-link layer transmits the frames across the physical link andhandles acknowledgements from the receiver.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 13 / 50

Page 24: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Data-Link Layer (2/3)

I The data-link layer encapsulates datagrams from the network layerinto units, called frames.

I It also adds each frame a header containing the destination addressand frame size.

I The data-link layer transmits the frames across the physical link andhandles acknowledgements from the receiver.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 13 / 50

Page 25: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Data-Link Layer (3/3)

I From an application-programming point of view, we can generallyignore the data-link layer, since all communication details are han-dled in the driver and hardware.

I Maximum Transmission Unit (MTU): the upper limit that the layerplaces on the size of a frame.

• data-link layers have different MTUs.

netstat -i

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 14 / 50

Page 26: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Data-Link Layer (3/3)

I From an application-programming point of view, we can generallyignore the data-link layer, since all communication details are han-dled in the driver and hardware.

I Maximum Transmission Unit (MTU): the upper limit that the layerplaces on the size of a frame.

• data-link layers have different MTUs.

netstat -i

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 14 / 50

Page 27: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Network Layer (1/4)

I It is concerned with delivering data from the source host to thedestination host.

I It tasks include:• Breaking data into fragments small enough for transmission via the

data-link layer.• Routing data across the internet.• Providing services to the transport layer.

I In the TCP/IP protocol suite, the principal protocol in the networklayer is IP.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 15 / 50

Page 28: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Network Layer (1/4)

I It is concerned with delivering data from the source host to thedestination host.

I It tasks include:• Breaking data into fragments small enough for transmission via the

data-link layer.• Routing data across the internet.• Providing services to the transport layer.

I In the TCP/IP protocol suite, the principal protocol in the networklayer is IP.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 15 / 50

Page 29: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Network Layer (1/4)

I It is concerned with delivering data from the source host to thedestination host.

I It tasks include:• Breaking data into fragments small enough for transmission via the

data-link layer.• Routing data across the internet.• Providing services to the transport layer.

I In the TCP/IP protocol suite, the principal protocol in the networklayer is IP.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 15 / 50

Page 30: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Network Layer (2/4)

I IP transmits data in the form of packets.

I Each packet sent between two hosts travels independently acrossthe network.

I An IP packet includes a header that contains the address of thesource and target hosts.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 16 / 50

Page 31: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Network Layer (2/4)

I IP transmits data in the form of packets.

I Each packet sent between two hosts travels independently acrossthe network.

I An IP packet includes a header that contains the address of thesource and target hosts.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 16 / 50

Page 32: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Network Layer (2/4)

I IP transmits data in the form of packets.

I Each packet sent between two hosts travels independently acrossthe network.

I An IP packet includes a header that contains the address of thesource and target hosts.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 16 / 50

Page 33: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Network Layer (3/4)

I IP is a connectionless protocol: it does not provide a virtual circuitconnecting two hosts.

I IP is an unreliable protocol: it makes a best effort to transmit data-grams from the sender to the receiver, but it does not guarantee:

• that packets will arrive in the order they were transmitted,• that they will not be duplicated,• that they will arrive at all.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 17 / 50

Page 34: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Network Layer (3/4)

I IP is a connectionless protocol: it does not provide a virtual circuitconnecting two hosts.

I IP is an unreliable protocol: it makes a best effort to transmit data-grams from the sender to the receiver, but it does not guarantee:

• that packets will arrive in the order they were transmitted,• that they will not be duplicated,• that they will arrive at all.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 17 / 50

Page 35: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Network Layer (4/4)

I An IP address consists of two parts:• Network ID: specifies the network on which a host resides.• Host ID: identifies the host within that network.

I An IPv4 address consists of 32 bits: 204.152.189.0/24• loopback 127.0.0.1 refers to system on which process is running.

I Network mask: a sequence of 1s in the leftmost bits, followed by asequence of 0s

• The 1s indicate which part of the address contains the assignednetwork ID.

• The 0s indicate which part of the address is available to assign ashost IDs.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 18 / 50

Page 36: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Network Layer (4/4)

I An IP address consists of two parts:• Network ID: specifies the network on which a host resides.• Host ID: identifies the host within that network.

I An IPv4 address consists of 32 bits: 204.152.189.0/24• loopback 127.0.0.1 refers to system on which process is running.

I Network mask: a sequence of 1s in the leftmost bits, followed by asequence of 0s

• The 1s indicate which part of the address contains the assignednetwork ID.

• The 0s indicate which part of the address is available to assign ashost IDs.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 18 / 50

Page 37: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Network Layer (4/4)

I An IP address consists of two parts:• Network ID: specifies the network on which a host resides.• Host ID: identifies the host within that network.

I An IPv4 address consists of 32 bits: 204.152.189.0/24• loopback 127.0.0.1 refers to system on which process is running.

I Network mask: a sequence of 1s in the leftmost bits, followed by asequence of 0s

• The 1s indicate which part of the address contains the assignednetwork ID.

• The 0s indicate which part of the address is available to assign ashost IDs.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 18 / 50

Page 38: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Transport Layer (1/5)

I Transport protocol provides an end-to-end communication serviceto applications residing on different hosts.

I Two widely used transport-layer protocols in the TCP/IP suite:• User Datagram Protocol (UDP): the protocol used for datagram

sockets.• Transmission Control Protocol (TCP): the protocol used for stream

sockets.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 19 / 50

Page 39: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Transport Layer (1/5)

I Transport protocol provides an end-to-end communication serviceto applications residing on different hosts.

I Two widely used transport-layer protocols in the TCP/IP suite:• User Datagram Protocol (UDP): the protocol used for datagram

sockets.• Transmission Control Protocol (TCP): the protocol used for stream

sockets.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 19 / 50

Page 40: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Transport Layer (2/5)

I Port: a method of differentiating the applications on a host.• 16-bit number

• All ports below 1024 are well known, used for standard services,e.g., http: 80, ssh: 22.

• Shown as 192.168.1.1:8080.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 20 / 50

Page 41: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Transport Layer (2/5)

I Port: a method of differentiating the applications on a host.• 16-bit number• All ports below 1024 are well known, used for standard services,

e.g., http: 80, ssh: 22.

• Shown as 192.168.1.1:8080.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 20 / 50

Page 42: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Transport Layer (2/5)

I Port: a method of differentiating the applications on a host.• 16-bit number• All ports below 1024 are well known, used for standard services,

e.g., http: 80, ssh: 22.• Shown as 192.168.1.1:8080.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 20 / 50

Page 43: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Transport Layer (3/5)

I UDP, like IP, is connectionless and unreliable.

I If an application layered on top of UDP requires reliability, then thismust be implemented within the application.

I UDP adds just two features to IP:• Port number• Data checksum to allow the detection of errors in the transmitted

data.

[http://www.tamos.net/∼rhay/overhead/ip-packet-overhead.htm]

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 21 / 50

Page 44: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Transport Layer (3/5)

I UDP, like IP, is connectionless and unreliable.

I If an application layered on top of UDP requires reliability, then thismust be implemented within the application.

I UDP adds just two features to IP:• Port number• Data checksum to allow the detection of errors in the transmitted

data.

[http://www.tamos.net/∼rhay/overhead/ip-packet-overhead.htm]

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 21 / 50

Page 45: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Transport Layer (3/5)

I UDP, like IP, is connectionless and unreliable.

I If an application layered on top of UDP requires reliability, then thismust be implemented within the application.

I UDP adds just two features to IP:• Port number• Data checksum to allow the detection of errors in the transmitted

data.

[http://www.tamos.net/∼rhay/overhead/ip-packet-overhead.htm]

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 21 / 50

Page 46: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Transport Layer (4/5)

I TCP provides a reliable, connection-oriented, bidirectional, byte-stream communication channel between two endpoints.

I Before communication can commence, TCP establishes a commu-nication channel between the two endpoints.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 22 / 50

Page 47: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Transport Layer (4/5)

I TCP provides a reliable, connection-oriented, bidirectional, byte-stream communication channel between two endpoints.

I Before communication can commence, TCP establishes a commu-nication channel between the two endpoints.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 22 / 50

Page 48: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Transport Layer (5/5)

I In TCP, data is broken into segments: each is transmitted in a singleIP packet.

I When a destination receives a TCP segment, it sends an ack. tothe sender, informing weather it received the segment correctly ornot.

I Other features of TCP:• Sequencing• Flow control• Congestion control

[http://www.tamos.net/∼rhay/overhead/ip-packet-overhead.htm]

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 23 / 50

Page 49: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Transport Layer (5/5)

I In TCP, data is broken into segments: each is transmitted in a singleIP packet.

I When a destination receives a TCP segment, it sends an ack. tothe sender, informing weather it received the segment correctly ornot.

I Other features of TCP:• Sequencing• Flow control• Congestion control

[http://www.tamos.net/∼rhay/overhead/ip-packet-overhead.htm]

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 23 / 50

Page 50: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Transport Layer (5/5)

I In TCP, data is broken into segments: each is transmitted in a singleIP packet.

I When a destination receives a TCP segment, it sends an ack. tothe sender, informing weather it received the segment correctly ornot.

I Other features of TCP:• Sequencing• Flow control• Congestion control

[http://www.tamos.net/∼rhay/overhead/ip-packet-overhead.htm]

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 23 / 50

Page 51: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

OK, Let’s Back to Socket

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 24 / 50

Page 52: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Socket

I A socket is defined as an endpoint for communication.

I A typical client-server scenario:• Each process creates a socket: both processes require one.• The server binds its socket to a well-known address (name) so that

clients can locate it.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 25 / 50

Page 53: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Socket

I A socket is defined as an endpoint for communication.

I A typical client-server scenario:• Each process creates a socket: both processes require one.• The server binds its socket to a well-known address (name) so that

clients can locate it.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 25 / 50

Page 54: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Creating a Socket

I socket() creates a new socket.

#include <sys/socket.h>

int socket(int domain, int type, int protocol);

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 26 / 50

Page 55: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Socket Domains

I The UNIX domain (AF UNIX)• Communication between processes on the same host (within the

kernel).• Address format: path name.

I The IPV4 domain (AF INET)• Communication between processes running on hosts connected via

an IPv4 network.• Address format: 32-bit IPv4 address + 16-bit port number.

int socket(int domain, int type, int protocol);

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 27 / 50

Page 56: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Socket Domains

I The UNIX domain (AF UNIX)• Communication between processes on the same host (within the

kernel).• Address format: path name.

I The IPV4 domain (AF INET)• Communication between processes running on hosts connected via

an IPv4 network.• Address format: 32-bit IPv4 address + 16-bit port number.

int socket(int domain, int type, int protocol);

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 27 / 50

Page 57: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Socket Types

I Stream sockets (SOCK STREAM)• It provides a reliable, bidirectional, byte-stream communication

channel.• Called connection-oriented.

I Datagram sockets (SOCK DGRAM)• Allow data to be exchanged in the form of messages called

datagrams.• Called connectionless.

int socket(int domain, int type, int protocol);

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 28 / 50

Page 58: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Socket Types

I Stream sockets (SOCK STREAM)• It provides a reliable, bidirectional, byte-stream communication

channel.• Called connection-oriented.

I Datagram sockets (SOCK DGRAM)• Allow data to be exchanged in the form of messages called

datagrams.• Called connectionless.

int socket(int domain, int type, int protocol);

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 28 / 50

Page 59: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Binding a Socket to an Address

I bind() binds a socket to an address.

#include <sys/socket.h>

int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 29 / 50

Page 60: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Listening for Incoming Connections

I listen() marks the stream socket passive.

I The socket will subsequently be used to accept connections fromother (active) sockets.

#include <sys/socket.h>

int listen(int sockfd, int backlog);

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 30 / 50

Page 61: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Accepting a Connection

I accept() accepts an incoming connection on the listening streamsocket.

I If there are no pending connections when accept() is called, thecall blocks until a connection request arrives.

#include <sys/socket.h>

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 31 / 50

Page 62: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Connecting to a Peer Socket

I connect() connects the active socket to the listening socket whoseaddress is specified by addr and addrlen.

#include <sys/socket.h>

int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 32 / 50

Page 63: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Stream Sockets

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 33 / 50

Page 64: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Producer-Consumer vi Stream Socket (1/2)

I Producer (Server)

int sockfd, connfd;

struct sockaddr_in serv_addr, cli_addr;

socklen_t cli_len;

char buffer[256];

bzero(&serv_addr, sizeof(serv_addr));

serv_addr.sin_family = AF_INET;

serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);

serv_addr.sin_port = htons(32000);

sockfd = socket(AF_INET, SOCK_STREAM, 0);

bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));

listen(sockfd, 5);

cli_len = sizeof(cli_addr);

connfd = accept(sockfd, (struct sockaddr *)&cli_addr, &cli_len);

read(connfd, buffer, 255);

write(connfd, "I got your message", 18);

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 34 / 50

Page 65: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Producer-Consumer vi Stream Socket (2/2)

I Consumer (Client)

int sockfd, connfd;

struct sockaddr_in serv_addr, cli_addr;

socklen_t clilen;

char *buf = "hello";

char rec_buf[256];

bzero(&serv_addr,sizeof(serv_addr));

serv_addr.sin_family = AF_INET;

serv_addr.sin_addr.s_addr = inet_addr("x.x.x.x");

serv_addr.sin_port = htons(32000);

sockfd = socket(AF_INET, SOCK_STREAM, 0);

connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));

write(sockfd, buf, strlen(buf));

read(sockfd, recv_buf, 255);

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 35 / 50

Page 66: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Internet Socket Addresses

I An IPv4 socket address is stored in a sockaddr in structure, definedin <netinet/in.h>.

int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

struct sockaddr {

sa_family_t sa_family; // Address family (AF_* constant)

char sa_data[14]; // Socket address

};

struct sockaddr_in { // IPv4 socket address

sa_family_t sin_family; // Address family (AF_INET)

in_port_t sin_port; // Port number

struct in_addr sin_addr; // IPv4 address

unsigned char _pad[X]; // Pad to size of ’sockaddr’ structure (16 bytes)

};

struct in_addr { // IPv4 4-byte address

in_addr_t s_addr; // Unsigned 32-bit integer

};

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 36 / 50

Page 67: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Datagram Sockets

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 37 / 50

Page 68: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Exchanging Datagrams

I recvfrom() and sendto() receive and send datagrams on a data-gram socket.

#include <sys/socket.h>

ssize_t sendto(int sockfd, const void *buffer, size_t length, int flags,

const struct sockaddr *dest_addr, socklen_t addrlen);

ssize_t recvfrom(int sockfd, void *buffer, size_t length, int flags,

struct sockaddr *src_addr, socklen_t *addrlen);

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 38 / 50

Page 69: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Producer-Consumer vi Datagram Socket (1/2)

I Producer (Server)

int sockfd, n;

struct sockaddr_in serv_addr, cli_addr;

socklen_t cli_len;

char buf[256];

bzero(&serv_addr, sizeof(serv_addr));

serv_addr.sin_family = AF_INET;

serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);

serv_addr.sin_port = htons(32000);

sockfd = socket(AF_INET, SOCK_DGRAM, 0);

bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));

cli_len = sizeof(cli_addr);

n = recvfrom(sockfd, buf, 255, 0, (struct sockaddr *)&cli_addr, &cli_len);

sendto(sockfd, buf, n, 0, (struct sockaddr *)&cli_addr,sizeof(cli_addr));

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 39 / 50

Page 70: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Producer-Consumer vi Datagram Socket (2/2)

I Consumer (Client)

int sockfd, connfd;

struct sockaddr_in serv_addr, cli_addr;

socklen_t clilen;

char *buf = "hello";

char recv_buf[256];

bzero(&serv_addr,sizeof(serv_addr));

serv_addr.sin_family = AF_INET;

serv_addr.sin_addr.s_addr = inet_addr("x.x.x.x");

serv_addr.sin_port = htons(32000);

sockfd = socket(AF_INET, SOCK_DGRAM, 0);

sendto(sockfd, buf, strlen(buf), 0, (struct sockaddr *)&serv_addr,

sizeof(serv_addr));

recvfrom(sockfd, recv_buf, 255, 0, NULL, NULL);

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 40 / 50

Page 71: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Signals

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 41 / 50

Page 72: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Signals (1/2)

I Signals are software interrupts to notify a process that a particularevent has occurred.

I These events can originate from outside the system, e.g., by pressingCtrl-C, or when a process executes code that divides by zero.

I As a primitive form of IPC, one process can also send a signal toanother process.

ps -aux | grep acrobat

amir 7302 0.0 0.0 ...

kill -9 7302

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 42 / 50

Page 73: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Signals (1/2)

I Signals are software interrupts to notify a process that a particularevent has occurred.

I These events can originate from outside the system, e.g., by pressingCtrl-C, or when a process executes code that divides by zero.

I As a primitive form of IPC, one process can also send a signal toanother process.

ps -aux | grep acrobat

amir 7302 0.0 0.0 ...

kill -9 7302

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 42 / 50

Page 74: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Signals (1/2)

I Signals are software interrupts to notify a process that a particularevent has occurred.

I These events can originate from outside the system, e.g., by pressingCtrl-C, or when a process executes code that divides by zero.

I As a primitive form of IPC, one process can also send a signal toanother process.

ps -aux | grep acrobat

amir 7302 0.0 0.0 ...

kill -9 7302

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 42 / 50

Page 75: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Signals (2/2)

I A signal handler is used to process signals.1 Signal is generated by particular event.2 Signal is delivered to a process.3 Signal is handled by one of two signal handlers: default or

user-defined.

I Every signal has default handler that kernel runs when handlingsignal

I User-defined signal handler can override default.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 43 / 50

Page 76: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Signals (2/2)

I A signal handler is used to process signals.1 Signal is generated by particular event.2 Signal is delivered to a process.3 Signal is handled by one of two signal handlers: default or

user-defined.

I Every signal has default handler that kernel runs when handlingsignal

I User-defined signal handler can override default.

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 43 / 50

Page 77: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 44 / 50

Page 78: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Signal Management

I signal() removes the current action taken on receipt of the sig-nal signo and instead handles the signal with the signal handlerspecified by handler.

#include <signal.h>

typedef void (*sighandler_t)(int);

sighandler_t signal(int signo, sighandler_t handler);

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 45 / 50

Page 79: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Waiting for a Signal

I pause() puts a process to sleep until it receives a signal.

#include <unistd.h>

int pause(void);

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 46 / 50

Page 80: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Signal Example

// handler for SIGINT

static void sigint_handler(int signo) {

printf("Caught SIGINT!\n");

exit(0);

}

int main(void) {

// Register sigint_handler as our signal handler for SIGINT.

if (signal(SIGINT, sigint_handler) == SIG_ERR)

exit(1);

pause();

return 0;

}

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 47 / 50

Page 81: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Summary

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 48 / 50

Page 82: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Summary

I TCP-IP protocol layers: data-link, network, transport, application

I Data-link: network card

I Network layer: routing, IP, 32-bit address, 16-bit port

I Transport layer: TCP (stream, connection-oriented), UDP (data-gram, connectionless)

I Sockets

I Signal: software interrupts

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 49 / 50

Page 83: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Summary

I TCP-IP protocol layers: data-link, network, transport, application

I Data-link: network card

I Network layer: routing, IP, 32-bit address, 16-bit port

I Transport layer: TCP (stream, connection-oriented), UDP (data-gram, connectionless)

I Sockets

I Signal: software interrupts

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 49 / 50

Page 84: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Summary

I TCP-IP protocol layers: data-link, network, transport, application

I Data-link: network card

I Network layer: routing, IP, 32-bit address, 16-bit port

I Transport layer: TCP (stream, connection-oriented), UDP (data-gram, connectionless)

I Sockets

I Signal: software interrupts

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 49 / 50

Page 85: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Summary

I TCP-IP protocol layers: data-link, network, transport, application

I Data-link: network card

I Network layer: routing, IP, 32-bit address, 16-bit port

I Transport layer: TCP (stream, connection-oriented), UDP (data-gram, connectionless)

I Sockets

I Signal: software interrupts

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 49 / 50

Page 86: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Summary

I TCP-IP protocol layers: data-link, network, transport, application

I Data-link: network card

I Network layer: routing, IP, 32-bit address, 16-bit port

I Transport layer: TCP (stream, connection-oriented), UDP (data-gram, connectionless)

I Sockets

I Signal: software interrupts

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 49 / 50

Page 87: Processes (Part III) - Amir H. Payberah · Inter-Process Communication (IPC) Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 2 / 50

Questions?

Amir H. Payberah (Tehran Polytechnic) Processes 1393/7/7 50 / 50