Transcript lec1

Network Programming
Eddie Aronovich
mail: [email protected]
How did it started ?
1983 First wide
availiable Tcp/IP
(BSD 4.2)
1988 (BSD 4.3)
slow start,
congestion
avoidence, fast
retransmit
1989 - Net/1
1990 (BSD 4.3)
fast recovery, TCP
header prediction,
routing tables changes
1991 - Net/2
1993(4.4BSD)
multicast,
long fat pipe
modification
1994 Net/3
How can we write
communication ?
 Application Program Interface (API)
– Sockets
– TLI (Transport Layer Interface)
 System calls
 Library functions
What is it for ?
Communication systems provides 3 services:
– Information & resource Sharing
– Distance gapping
– Backup abilities
Fundamentals
 Server - An entity which gives services
 Client - An entity which requests services
 Transport layer - To transfer the data
The 7 layers model
Layer 7
Application
Process
Layer 6
Presentation
Layer 5
Session
Socket Layer
Layer 4
Transport
Protocol Layer
(TCP/IP, OSI, Unix)
Layer 3
Network
Interface Layer
(Ethernet, SLIP, loopback, etc)
Layer 2
Data Link
Media
Layer 1
Physical
The 7 Layer model in real life
Process
Layer 7
Application
Layer 6
Presentation
Layer 5
Session
Socket Layer
Layer 4
Transport
Function Call
Socket Queue
Socket Queue
Protocol Layer
(TCP/IP, OSI, Unix)
Layer 3
Network
Function Call
Interface
queue
Interface
queue
Protocol queue
Interface Layer
(Ethernet, SLIP, loopback, etc)
Layer 2
Data Link
Media
Layer 1
Physical
The message is built in one side...
Message from
application
4th layer
header
Message from
application
3rd
4th layer
layer
header
header
Message from
application
2nd
3rd
4th layer
layer
layer
header
header header
Message from
application
2nd
layer
trailer
And striped in the dest. side…
Application
Application
4th layer
3rd layer
4th layer
3rd layer
Driver
Ethernet
3rd layer
From Lynx to Netscape
or chat client
Presentation
Client
Server
W aits for
connection
Initiates
Connection
Requests
service
Process
Response
Close
conenction
Initiates
Connection
Accepts
Request
Response
to Request
Close
conenction
Descriptors
 Everything in Unix is a file
 Descriptor is an index into an array
proc {}
fd1
fd2
fd3
.
.
.
fdi
fdj
.
.
file{}
file{}
i-node
V-node
file{}
socket{}
i-node
V-node
Memory Buffers
 Contains Socket Address Structure
 Headers
 Data
The Basics of communication
LectureII
Processing Techniques
The Client  Server Model
 The server roles:
– Give service as asked
– Wait the client to appeal to him
 The client roles:
– Start the communication process
– Asks the wanted service
Design considerations
 Serve single or multiple users
 Use reliable or unreliable protocol
 Software updates
Client and server roles in UDP
 Server roles:
– Bind a port
– Wait for a message to come
– Send reply
 Client roles:
– Send a message
– Get the reply
User Datagram Protocol*
 Simple protocol
 Connectionless
 Unreliable
*{RFC 768}
Socket:={ip_addr, port number}
 API, an interface for the program to contact
with communication.
 Enable usage of regular file commands as
read, write and so on.
 The sockets are structures passed from
kernel to process and vice versa.
What the socket struct contains ?
 Socket type {stream, dgram, raw,…}
 Socket options {broadcast, OOB...}
 Time to linger wait before close the socket
 Socket state flags
 Protocol Control Block
 Protocol Handle
The socket & address structs
 General
struct sockaddr {
uint8_t
sa_len;
of socket struct
*/
sa_family_t sa_family;
as AF_INET
*/
char
sa_data[20];
Address
*/
/*Len
/*Addr family
/*Protocol
 IP V4 address socket
struct sockaddr_in {
uint8_t
socket length
sa_family_t
IP addresses
unit16_t
sin_len;
*/
sin_family;
*/
sin_port;
/*The
/*AF_INET for
/*The
How the socket is created
 The system call passes identifiers for
address family(e.g.AF_UNIX, AF_INET,etc.),
socket type and protocol.
 Socket data structure is allocated.
 Pointer from the fd table to other i-node
struct which points to the socket.
User Datagram Protocol (rfc 768)
 Data transport layer protocol
(Fragment packets to fit local MTU)
 Used to make available datagram packet switched
mode
 Connectionless protocol
 Used when RTT is important or no connection
needed
UDP header
Source port number
(16 bit)
Destination port
number (16 bit)
Length
(16 bit)
UDP Checksum
(16 bit)
Data
UDP by network monitor
Lets do it in UDP - client
C:\TEMP\udp-cli-c.htm
Lets do it in UDP - server
C:\TEMP\udp-srv-c.html
TCP
LectureIII
Transmission Control Protocol
rfc 793
 Reliability
 Sequenced data transfer
 Flow control
 Full duplex
TCP Header
Source port number
(16 bit)
Dest port number
(16 bit)
Sequence number (32 bit)
Acknowledgement number (32 bit)
FIN
SYN
RST
PSH
ACK
F.F.U
(6 bit)
URG
Header
length
(4 bit)
TCP Checksum
(16 bit)
Window size
(16 bit)
Urgent Pointer
(16 bit)
Options
Data
Ack & Flow control
 Acknowledgements are sent by byte.
 The acks can be sent for group of packets
(but should arrive before time out of first
packet).
 Window size is used for flow control and is
controlled by receiver.
How connection starts ?
connect();
listen();
SYN j
connect
returns….
SYN k, ACK j+1
accept();
accept
returns….
ACK k+1
Connection Established
How we do it in C ?
Server
Client
socket();
socket();
bind();
listen();
accept();
{New file
descriptor is given}
connect();
Ending Sessions
Passive close (FIN arrives) Vs. Active close
FIN_WAIT_1
FIN M
ACK M+1
CLOSE_WAIT
FIN_WAIT_2
FIN N
TIME_WAIT
(2MSL)
LAST_ACK
ACK N+1
CLOSED
Internet Protocol
LectureIV
Network Layer
 Passing packet from source host to
destination host (cross networks if needed)
 Independent of the datalink layer
 QoS
 Flow control
Internet Protocol
 Connectionless
 Unreliable
 Best effort
Address
 IP address consist 32bit and is divided into
{network id.,host id}
 Part of host id can be used for subnet mask
 Some special addresses are defined (as: net-
addr, broadcast-addr, multicast-addr)
Addresses and Classes
Class A 01XXXXXX
Addresses: 0-127.X.X.X
Class B 10XXXXXX
Addresses: 128-191.0-255.X.X
Class C 110XXXXX
Addresses: 192-223.0-255.0-255.X
Masks
 Mask is used to refine network division.
 ‘1’b in mask symbolize bit belongs to
network address.
 ‘0’b in mask symbolize bit belongs to host
address.
Address conventions
 Network address filled with ‘0’ in host
address.
 Broadcast address filled with ‘1’ in host
address.
 First, last subnet and address aren’t used
How routing is done ?
 The router compares destination IP with
each Network & subnet address.
 Unknown destination is routed to default.
 Routers update each other with appropriate
algorithms.
VI ‫שיעור‬
I/O Multiplexing
I/O Models
 Blocking I/O
 Nonblocking I/O
 I/O Multiplexing
 Signal driven
 Asynchronous I/O
Non-Blocking I/O
 No blocking is done (Error is returned)
 Reading is done in loop (until data arrives)
 Polling – costs CPU time
 Implementation in real time systems only
Signal Driven I/O
 Signal handler should be started