340 likes | 511 Views
Computer Networks. Text has no relevant information. Learning Outcomes. Be able to explain the differences between different types of computer networks Be able to identify differences in connection based and connectionless communication protocols
E N D
Computer Networks Text has no relevant information
Learning Outcomes • Be able to explain the differences between different types of computer networks • Be able to identify differences in connection based and connectionless communication protocols • Be able to explain the way data are exchanged between two machines in term of the standard protocols and their data headers
What do we know about Networking? • So far we have • looked at the socket API • discussed the basic actions that applications have to perform to communicate • been aware of threads and how to use them • seen how to use semaphores to deal with problems that require the application to process more than one thing at a time
Is this enough? • What happens when we send our data from one machine to another? • With respect to network programming: • Is it certain that the data will always arrive? • Should we care how long it might take for data to arrive? • Should we care about the data arrival rate? • etc. • Would knowledge about any of these things change the way we design a program?
Communication paths • When data is exchanged between computers it may traverse many different network types and travel at different speeds • 100 Mb/s - local Ethernet (copper wire) • 1 Gb/s - local backbone (fiber) • 155 Mbs/s - OC3 leased line • 10 Gb/s – OC192 backbone • 11 Mb/s - 802.11g to the laptop
What’s a Network? • A network is a Collection of interconnected computers. • Depending on the number of computers and the distance between them we can form: • Local Area Networks (LAN) • cover small local area, like a home, office, or campus • are fast • can be wireless • Metropolitan Area Networks (MAN) • usually spanning a campus or a city • typically use wireless structure or optical fiber connections to link their sites. • Wide Area Networks (WAN) • cover a wide area, involve a large number of computers • usually connect LAN’s and MAN’s • Internet is a WAN
Local Area Networks or • Bus: Computers are connected to a central cable (bus). Also called Ethernet. • Ring:Computers are connected into a loop. • Star:Computers are connected to a hub or a switch • most popular nowadays • Network Hub: • has ports where computers are attached • repeats the signal received at one port out each of the other ports • Network Switch: • Like a hub, but it only sends the signal to one other port
Wide Area Networks [Tan02] • Notes in the subnet are usually routers. • A router acts as a junction between two or more networks to transfer data among them. Backbone
Architecture of the Internet [Tan02] • Network Access Point: huge interconnection points • Points Of Presence: connects clients to an ISP • To connect a computer to Internet, we connect it to an ISP computer via a modem.
Distinguishing Network Characteristics • Latency - how long it takes data to get from one location to the next • Bandwidth – the amount of data that can be moved in a given unit of time • Jitter – the variability in latency • Error rate – how frequently data becomes corrupted during transmission
Data transmission • Signal transmission over cables, fiber optics, or other media generates errors; Sender may have to re-send a message many times • For efficiency, messages are divided into fix-size packets before they sent • Two ways to send the packets: • Using Connectionless Service (or Datagram) • Using Connection-Oriented Service (or virtual circuit )
Connection Based Service(TCP/IP) • Sending and receiving hosts establish a connection • Sender • Splits sequence of outgoing bytes into packets • Remembers sent packets in case they are lost and need to be resent • Receiver • Receives packets • Reassembles packets into a sequence of bytes • If packets don’t arrive in a given time requests the sender to retransmit them • Produces a reliable streamed delivery of data • The most common protocol supported by most OS’s is TCP/IP • TCP – Transmission Control Protocol • IP – Internet Protocol
Datagram (UDP) • Not streamed – data arrives in the “chunks” that the sender sent, called datagrams • Datagrams have a maximum size • Datagrams are individually addressed • Datagrams may be lost • Datagrams may arrive out of order • No connection setup • No connection state • The most common protocol supported by most OS’s is • UDP – User Datagram Protocol
Protocol • A formally agreed upon convention for performing or engaging in some sort of activity • A data communication protocol is an example of a protocol to exchange data between machines • A connection protocol describes how two machines establish a connection. (Usually a subset of a data communication protocol)
Introducing Protocol Layers • Communication protocols are usually designed as a stack of layers • Similar idea to virtual machine • Add layers to perform various functions • Lowest layer deals with hardware • Next layer deals with moving data to the destination machine • Next layer handles correcting errors and lost data (if appropriate) and getting data to application • Last layer is the application
Layering Yet Again! Application programs Operating system Hardware General Layering Structure Application Application Transport Unix I/O Network File System Link Disk Drive File System Layering Network Layering
Application telnet, FTP, SMTP, HTTP Transport TCP, UDP Network IP Link Ethernet, token ring, wireless Protocol Layers Application Transport Network Link
Layers of Functionality • Each layer hides the details from the layer above and uses the services of the layer below • A layer in a node A interacts with the same layer in another node B (using the layers below it ) Specifically: • Link – moves the data between directly connected nodes on the path to the destination • Network – used to route the data between the source/destination end points • Transport – application to application delivery • Application – application level interchanges
Encapsulation • To achieve the desired functionality each layer adds “headers” to the data it receives • Headers are meant for the corresponding layer at the destination • Headers are removed at the destination layer
Protocol headers Application A. Data Application data A. Data Transport TCP Header A. Data TCP Header A. Data Network IP Header TCP Header A. Data Link Ethernet Header IP Header TCP Header A. Data
Protocol headers: Going Down Application A. Data Transport TCP Header A. Data Network IP Header TCP Header A. Data Link Ethernet Header IP Header TCP Header A. Data
Protocol headers: Coming up Application Transport Network Link Ethernet Header IP Header TCP Header A. Data
Source Port Destination Port Sequence Number Control Fields (Includes transport protocol type) Source. Ethernet Addr Type/Size Destination IP Address Options Dest Ethernet Addr Source IP Address ACK Number Additional Fields Header Contents TCP IP Ethernet
Application Application Transport Transport Network Network Network Link Link Link Link Routing example Source Destination Application data TCP Header IP Header Ethernet Header 802.11G Header
AP1 AP2 AP3 Application Protocol 1 Application Protocol 2 Application Protocol 3 Protocol Processing TCP UDP IP Ethernet Wireless
Send pkt0 pkt0 recv pkt0 Send ACK0 ACK0 recv ACK0 Send pkt1 pkt1 recv pkt1 Send ACK1 ACK1 recv ACK1 Send pkt2 pkt2 recv pkt2 Send ACK2 ACK2 recv ACK2 TCP Acknowledgement Normal Operation, no loss
Send pkt0 pkt0 recv pkt0 Send ACK0 ACK0 recv ACK0 Send pkt1 pkt1 X Timeout loss Send pkt1 pkt1 recv pkt1 Send ACK1 ACK1 recv ACK0 pkt2 TCP Acknowledgement Lost Packet
Extending Device I/O • Layering makes it “easy” to • incorporate networking in the OS • extend I/O to devices that are connected to computer through a network • Example: • Network File Systems (NFS) • Just insert the new service at the appropriate layer
Application UNIX I/O Inserting New Functionality File System UNIX FFS Logging FS NFSClient Other Devices Virtual Disk Interface Virtual Disk Interface Network Protocol Stack SCSI IDE
GCC GCC Mozilla Firefox emacs emacs STDIO STDIO Transport IP Protocol Stack UNIX I/O UNIX I/O Link FFS FFS LFS LFS Protocol Stack Virtual Disk interface Virtual Disk interface IDE IDE SCSI SCSI Other devices Other devices Virtual Machine Monitor Virtual Machine Monitor Display Display Network card Network card Disks Disks CPU CPU Motherboard Motherboard etc etc From the beginning to the end Application programs Operating system Hardware