sockets-bridge-learning

Download Report

Transcript sockets-bridge-learning

Introduction to Computer Networks
09/21/2010
Outline
- UNIX sockets
- A simple client-server program
- Project 1
- LAN bridges and learning
CS 640
1
Berkeley Sockets
• Networking protocols are implemented as part of
the OS
– The networking API exported by most OS’s is the
socket interface
– Originally provided by BSD 4.1c ~1982.
• The principal abstraction is a socket
– Point at which an application attaches to the network
– Defines operations for creating connections, attaching
to network, sending/receiving data, closing.
CS 640
2
Connection-oriented example (TCP)
Server
Socket()
Bind()
Client
Listen()
Socket()
Accept()
Connection Establishmt.
Block until
connect
Recv()
Process
request
Send()
Data (request)
Connect()
Send()
Data (reply)
Recv()
CS 640
3
Connectionless example (UDP)
Server
Socket()
Client
Bind()
Socket()
Recvfrom()
Bind()
Block until
Data from
client
Data (request)
Sendto()
Process
request
Sendto()
Data (reply)
Recvfrom()
CS 640
4
Socket call
• Means by which an application attached to the network
• int socket(int family, int type, int protocol)
• Family: address family (protocol family)
– AF_UNIX, AF_INET, AF_NS, AF_IMPLINK
• Type: semantics of communication
– SOCK_STREAM, SOCK_DGRAM, SOCK_RAW
– Not all combinations of family and type are valid
• Protocol: Usually set to 0 but can be set to specific value.
– Family and type usually imply the protocol
• Return value is a handle for new socket
CS 640
5
Bind call
• Binds a newly created socket to the specified address
• Int bind(int socket, struct sockaddr *address, int addr_len)
• Socket: newly created socket handle
• Address: data structure of address of local system
– IP address and port number (demux keys)
– Same operation for both connection-oriented and
connectionless servers
• Can use well known port or unique port
CS 640
6
Listen call
• Used by connection-oriented servers to indicate an
application is willing to receive connections
• Int(int socket, int backlog)
• Socket: handle of newly creates socket
• Backlog: number of connection requests that can
be queued by the system while waiting for server
to execute accept call.
CS 640
7
Accept call
• After executing listen, the accept call carries out a
passive open (server prepared to accept connects).
• Int accept(int socket, struct sockaddr *address, int addr_len)
• It blocks until a remote client carries out a
connection request.
• When it does return, it returns with a new socket that
corresponds with new connection and the address
contains the clients address
CS 640
8
Connect call
• Client executes an active open of a connection
• Int connect(int socket, struct sockaddr *address, int addr_len)
• Call does not return until the three-way handshake
(TCP) is complete
• Address field contains remote system’s address
• Client OS usually selects random, unused port
CS 640
9
Send(to), Recv(from)
• After connection has been made, application uses
send/recv to data
• Int send(int socket, char *message, int msg_len, int flags)
– Send specified message using specified socket
• Int recv(int scoket, char *buffer, int buf_len, int flags)
– Receive message from specified socket into specified buffer
CS 640
10
Socket Implimentation
• Protocol implementation
– Process per protocol
• Use a separate process to implement each protocol
• Messages are passes between processes
– Process per message
• Use one process to handle each message/communication
• Generally more efficient
• Buffer use
– Applications use buffers as do protocols
• Copies are VERY expensive
• Message abstraction enables pointers to be used and minimal copies
CS 640
11
Practical issues – using sockets
• You have to be very careful when using these calls
– Specific data structures and formats
– Ports cannot be less than 1024
• You can use other tools to see if things are working
– Tcpdump
– /proc
– netstat
• Client and server can be on same system
• Think about error handling methods
CS 640
12
Switches and Learning
Outline
Why bridges (old name for switches)?
Example of Layer 2 forwarding
How do bridges build their forwarding
tables?
CS 640
13
LAN Properties
• Exploit physical proximity.
– Often a limitation on the physical distance
– E.g. to detect collisions in a contention based network
• Relies on single administrative control and some level of trust.
– Broadcasting packets to everybody and hoping everybody (other than
the receiver) will ignore the packet
• Broadcast: nodes can send messages that can be heard by all
nodes on the network.
– Almost essential for network administration
– Can also be used for applications, e.g. video conferencing
• But broadcast fundamentally does not scale.
CS 640
14
Building Larger LANs: Bridges
• Hubs are physical level devices
– Don’t isolate collision domains  broadcast issues
• At layer 2, bridges connect multiple IEEE 802 LANs
– BRIDGE is just an old name for a switch
– Separate a single LAN into multiple smaller collision domains
• Reduce collision domain size
host
host
host
host
host
host
host
host
Bridge
host
host
host
host
CS 640
15
Basic Bridge Functionality
• Bridges are full fledged packet switches
• Frame comes in on an interface
–
–
–
–
Switch looks at destination LAN address
Determines port on which host connected
Only forward packets to the right port
Must run CSMA/CD with hosts connected to same
LAN
• Also between bridge and host connected to a LAN
CS 640
16
Bridges provide “transparent”
functionality
• Design features:
– “Plug and play” capability
– Self-configuring without hardware or software changes
– Bridge do not impact the operation of the individual LANs
• Three components of transparent bridges:
1) Forwarding of frames
2) Learning of addresses
3) Spanning tree algorithm
CS 640
17
Address Lookup/Forwarding Example
Bridge
1
2
3
Address
Next Hop
Info
A21032C9A591
1
8:36
•
Address is a 48 bit IEEE MAC address.
99A323C90842
2
8:01
•
Next hop: output port for packet
8711C98900AA
2
8:15
•
Timer is used to flush old entries
301B2369011C
2
8:16
•
695519001190
3
8:11
Size of the table is equal to the number of
hosts
•
Flat address  no aggregation
•CS 640
No entry  packets are broadcasted
18
Learning
• Bridge tables can be filled in manually (flush out old entries etc)
– Time consuming, error-prone
– Self-configuring preferred
• Bridges use “learning”  crucial to their transparent functioning
• Keep track of source address of packet (S) and the arriving interface (I).
– Fill in the forwarding table based on this information
– Packet with destination address S must be sent to interface I!
host
host
host
host
host
host
host
host
Bridge
host
host
host CS 640host
19