section 1 computer networks - courses.cs.washington.edu
TRANSCRIPT
![Page 1: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/1.jpg)
Computer Networks Section 1Diya Joy and Jeffery Tian
Originally By David Wetherall (djw@)Modified By Diya Joy(diyajoy@), Jeffery Tian(jefftian@)
![Page 2: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/2.jpg)
Outline
Computer Networks
● Administrivia● Icebreaker● Project 1 and Socket API● Traceroute
![Page 3: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/3.jpg)
Administrivia
Computer Networks
� 3 Projects (15% + 17% + 18%)
� Post on Ed if you cannot find a partner
� Assignments (10%)
� Assignment 1: Read the textbook!
� What is RTT?
� Surprise Quizzes (5%)
� Midterm (15%) and Final (20%)
![Page 4: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/4.jpg)
Ice Breakers
Computer Networks
� Introduce yourself
Name
Pronouns
Favorite non-cs class
As a group, decide on a favorite ice cream flavor
![Page 5: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/5.jpg)
Network-Application Interface
� Defines how apps use the network
� Application Layer APIs
� Lets apps talk to each other
� hides the other layers of the network
Computer Networks
host
appapp
host
network
![Page 6: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/6.jpg)
Project 1
Computer Networks
� Simple Client
� Send requests to attu server
� Wait for a reply
� Extract the information from the reply
� Continue…
� Simple Server
� Server handles the Client requests
� Multi-threaded
![Page 7: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/7.jpg)
Project 1
Computer Networks
� This is the basis for many apps!
� File transfer: send name, get file (§6.1.4)
� Web browsing: send URL, get page
� Echo: send message, get it back
� Let’s see how to write this app …
![Page 8: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/8.jpg)
Socket API (Generalized)
Computer Networks
� Simple application-layer abstractions (APIs) to use the network
� The network service API used to write all Internet applications
� Part of all major OSes and languages; originally Berkeley (Unix) ~1983
� Two kinds of sockets
� Streams (TCP): reliably send a stream of bytes
� Datagrams (UDP): unreliably send separate messages
![Page 9: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/9.jpg)
Socket API (2)
� Sockets let apps attach to the local network at different ports
� Ports are used by OS to distinguish services/apps using internet
Socket Port 1
Socket Port 2
Computer Networks
![Page 10: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/10.jpg)
Socket API (3)
Computer Networks
https://docs.oracle.com/javase/8/docs/api/java/net/Socket.html https://docs.oracle.com/javase/8/docs/api/java/net/ServerSocket.html
Primitive Meaning
SOCKET Create a new communication endpointBIND Associate a local address (port) with a socket
LISTEN Announce willingness to accept connections; (give queue size)
ACCEPT Passively establish an incoming connectionCONNECT Actively attempt to establish a connectionSEND Send some data over the connectionRECEIVE Receive some data from the connectionCLOSE Release the connection
![Page 11: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/11.jpg)
Using TCP SocketsClient (host 1) Time Server (host 2)
Computer Networks
![Page 12: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/12.jpg)
Using TCP Sockets (2)Client (host 1) Time Server (host 2)
Computer Networks
1 1connect
![Page 13: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/13.jpg)
Using TCP Sockets (2)Client (host 1) Time Server (host 2)
request
Computer Networks
1 1
2
connect
![Page 14: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/14.jpg)
Using TCP Sockets (2)Client (host 1) Time Server (host 2)
request
Computer Networks
reply
1 1
2
3
connect
![Page 15: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/15.jpg)
Using TCP Sockets (2)Client (host 1) Time Server (host 2)
request
Computer Networks
reply
disconnect4
1 1
2
3
4
connect
![Page 16: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/16.jpg)
Using TCP Sockets (3)Client (host 1) Time Server (host 2)
1: socket
1: socket2: (bind)3: (listen)4: accept*
*= call blocks
![Page 17: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/17.jpg)
Using TCP Sockets (3)Client (host 1) Time Server (host 2)
5: connect*
1: socket
Computer Networks
connect
*= call blocks
1: socket2: (bind)3: (listen)4: accept*
![Page 18: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/18.jpg)
Using TCP Sockets (3)Client (host 1) Time Server (host 2)
5: connect*
1: socket
6: recv*
Computer Networks
connect
*= call blocks
1: socket2: (bind)3: (listen)4: accept*
![Page 19: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/19.jpg)
Using TCP Sockets (3)Client (host 1) Time Server (host 2)
5: connect*
1: socket
6: recv*7: send8: recv*
request
Computer Networks
connect
*= call blocks
1: socket2: (bind)3: (listen)4: accept*
![Page 20: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/20.jpg)
Using TCP Sockets (3)Client (host 1) Time Server (host 2)
5: connect*
1: socket
9: send
6: recv*7: send8: recv*
10: recv*
request
Computer Networks
reply
connect
*= call blocks
1: socket2: (bind)3: (listen)4: accept*
![Page 21: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/21.jpg)
Using TCP Sockets (3)Client (host 1) Time Server (host 2)
5: connect*
1: socket
9: send
6: recv*7: send8: recv*
11: close
request
Computer Networks
reply
disconnect
connect
*= call blocks
1: socket2: (bind)3: (listen)4: accept*
10: recv*
12: close
![Page 22: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/22.jpg)
Using UDP SocketsClient (host 1) Time Server (host 2)
5: connect*
1: socket
9: sendto
6: recvfrom*7: sendto8: recvfrom*
11: close
request
Computer Networks
reply
disconnect
connect
*= call blocks
1: socket2: (bind)3: (listen)4: accept*
10: recvfrom*
12: close
![Page 23: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/23.jpg)
Client Program (outline)
Computer Networks
socket() // make socket getaddrinfo() // server and port name
// www.example.com:80 connect() // connect to server
send()recv()… close()
// send request// await reply [block]
// do something with data!
// done, disconnect
![Page 24: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/24.jpg)
Server Program (outline)
Computer Networks
socket() // make socket
getaddrinfo() // for port on this host// associate port with socket
// prepare to accept connections
// wait for a connection [block]
bind()
listen()
accept()
…
recv()
…send()
close()
// wait for request [block]
// send the reply
// eventually disconnect
![Page 25: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/25.jpg)
Java Examples with Socket & ServerSocket
Computer Networks
� Server
• http://cs.lmu.edu/~ray/notes/javanetexamples/• https://docs.oracle.com/javase/tutorial/net
working/datagrams/clientServer.html• https://docs.oracle.com/javase/tutorial/net
working/sockets/index.html
ServerSocket listener = new ServerSocket(9090); try {
while (true) {Socket socket = listener.accept(); try {
socket.getInputStream();} finally {
socket.close();}
}}finally {
listener.close();}
Socket socket = new Socket(server, 9090);out =
new PrintWriter(socket.getOutputStream(), true); socket.close();
� Client
![Page 26: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/26.jpg)
Python Examples with socket
Computer Networks
� Server
● Python socket documentation● UDP socket example● socketserver (a little overkill)
listener = socket.socket(socket.AF_INET, socket.SOCK_STREAM) listener.bind(server_address)
while True: try: connection, client_addr = listener.accept() try: connection.recv(n_bytes) finally: connection.close() except: listener.close()
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)socket.connect(server_address)socket.sendto(message, server_address) socket.close();
� Client
![Page 27: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/27.jpg)
Traceroute
host
� Apps talk to other apps with no real idea of what is inside the network
� This is good! But you may be curious …
� Peeking inside the Network with Traceroute
app app
host
???
![Page 28: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/28.jpg)
Traceroute
� Widely used command-line tool to let hosts peek inside the network
� On all OSes (tracert on Windows)
� Developed by Van Jacobson ~1987
� Uses a network-network interface (IP) in ways we will explain later
Computer Networks
Credit: Wikipedia
Van Jacobson
![Page 29: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/29.jpg)
Traceroute
� Probes successive hops to find network path
� Core mechanism: Time-To-Live(TTL)� TTL == 0 ?
Discard data, error (ICMP) report to sender :Continue with TTL-1
Local Host
. . .
Remote Host
![Page 30: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/30.jpg)
Traceroute
. . .
Local Host
1 hop 2 hops3 hops N-1 hops
N hops
Remote Host
Computer Networks
![Page 31: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/31.jpg)
Using Traceroute
Computer Networks
![Page 32: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/32.jpg)
Using Traceroute
Computer Networks
Hop RTT 1 RTT 2 RTT 3 IP
![Page 33: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/33.jpg)
Using Traceroute
Computer Networks
Router settings affect results
![Page 34: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/34.jpg)
Using Traceroute (2)
� ISP names and places are educated guesses
My computer www.uw.edu(www1.cac.washington.edu)
Level3 pnw-gigapop
UW 6 hops 1 hop 3 hops
. . .
tdeTelefonica 3 hops 4 hops
100 ms180 ms
NYCSan Jose
Computer Networks
UW>200 ms
Seattle
Home 1 hop
![Page 35: Section 1 Computer Networks - courses.cs.washington.edu](https://reader031.vdocuments.site/reader031/viewer/2022012915/61c512e1eaace417a5039b85/html5/thumbnails/35.jpg)
END
© 2013 D. Wetherall
Slide material from: TANENBAUM, ANDREW S.; WETHERALL, DAVID J., COMPUTER NETWORKS, 5thEdition, © 2011. Electronically reproduced by permission of Pearson Education, Inc., Upper Saddle River, New Jersey
Computer Networks