• Tidak ada hasil yang ditemukan

Socket programming

N/A
N/A
Protected

Academic year: 2024

Membagikan "Socket programming"

Copied!
33
0
0

Teks penuh

(1)

Socket programming

Nisheeth

August 22nd 2019

(2)

Client-server model

• A server process and one or more client processes

• Server manages some resource

• Server provides service by manipulating resource for clients

(3)

Networking 101

The TCP/IP communication stack has four layers

Link layer

Communication protocols for physically linked devices

Internet layer

Communication protocols across networks

Transport layer

Host-to-host communication services

Application layer

Process-to-process communication methods across networks

(4)

Networking 101

The TCP/IP communication stack has four layers

Link layer

Communication protocols for physically linked devices

Internet layer

Communication protocols across networks

Transport layer

Host-to-host communication services Our main focus today

Application layer

Process-to-process communication methods across networks

(5)

MAC: A link layer protocol

Medium access control (MAC) controls the hardware responsible for the machine’s

interaction with the transmission medium

Cable Wifi

Each machine on a LAN has a network interface (e.g. ethernet card) connected to a common

broadcast medium

Each interface card is associated with a MAC address

(6)

MAC address

48 bit unique identifier assigned to a network interface controller

Human readable format: six octets represented in hex 01-23-45-67-89-AB

32:12:34:6F:45:AD

Of six octets

First three are manufacturing organization identifiers Last three are device identifiers assigned by

manufacturer

(7)

Ethernet frame format

• Data frames on ethernet are packets of a specific size and format

(8)

Ethernet communication protocol

• The sender broadcasts

• Each host connected to the LAN checks

destination address in data frame with own MAC address

• If destination matches, receive the packet

• Is this a good protocol?

(9)

Internet layer

Multiple LANs want to communicate with each other

Most popular protocol is the internet protocol (IP) Data packets routed to devices on other networks

Each network interface of a device connected to the internet has an IP address

IPv4 uses 32 bit addressing IPv6 uses 128 bit addressing

Routing efficiency is a function of IP address allocation protocols

(10)

IPv4 problems

• Too few unique addresses available

• Forced lots of hacky solutions

• Example: NAT

Try to find your IP using ifconfig

Try to find your IP using a third party lookup service

Why is there a difference?

• In the process of replacement by IPv6

For the time being, have to remain aware of hacks

(11)

Transport layer

• How is data to be transmitted, once we know how to send a data packet to any other device in the world?

• Two common paradigms

TCP (connections) UDP (datagrams)

• Socket programming is an excellent introduction to both

(12)

Sockets

Sockets make network I/O look like file I/O

Call system functions to control and communicate

Network code handles packet assembly, fragmentation and routing

(13)

Client programs

• Examples of client programs

http, ftp, telnet, ssh

• How does a client find a server?

The IP address in the server socket address identifies an adapter on the host

The port in the server socket address identifies the service

Port 7 = ping

Port 22 = ssh

Port 80 = http

(14)

Using ports to identify services

(15)

Servers

Servers are long-running processes (daemons)

Created at boot-time by the init process

Run continuously until the machine is turned off

Do you know what services are running on your Linux installation?

See /etc/services

Note that each service’s transport protocol is specified as either TCP or UDP

A machine that runs a server process is called a server

(16)

Sockets overview

(17)

Sockets

The Bible of socket programming

Beej’s network programming guide

Helpful and a fun read too

What is a socket?

To the kernel, a socket is an endpoint for communication

To an application, a socket is a file descriptor that lets the application read/write

The main difference between file I/O and

network I/O is how the application opens the socket descriptors

(18)

Socket programming basics

• The most important component of a socket transaction

The socket address Stored in a struct

• Internet-based socket addresses get a lot more detail

(19)

Internet-based socket addresses

(20)

Socket structure

(21)

Using socket addresses

• Write a simple C file including the necessary header files

• Create this structure and call the function getaddrinfo()

struct addrinfo {

int ai_flags; // AI_PASSIVE, AI_CANONNAME, etc.

int ai_family; // AF_INET, AF_INET6, AF_UNSPEC int ai_socktype; // SOCK_STREAM, SOCK_DGRAM int ai_protocol; // use 0 for "any"

size_int ai_addrlen; // size of ai_addr in bytes struct sockaddr *ai_addr; // struct sockaddr_in or _in6

char *ai_canonname; // full canonical hostname struct addrinfo *ai_next; // linked list, next node };

(22)
(23)
(24)
(25)
(26)
(27)

Don’t panic

• Beej’s guide is your friend

• I will give you basic client-server socket code as a baseline

• For any function that seems unfamiliar, just read the corresponding entry in beej’s guide

(28)

Socket types

(29)
(30)
(31)

Lab this week

• Grab the simple client-server demo in C from my github

• If you run the server code on one local terminal and the client code on another

It will transmit a Hello world message and quit

(32)

Lab this week

Make the server persistent, such that it doesn’t quit after one message transfer

Redesign the server such that

it accepts inputs from the client,

transforms them into lowercase and transmits back

Redesign the server and client such that

The client requests an HTML page stored on the server, that is displaying some headers and a simple table

The server sends the file to the client as text

The client code calls a shell script to display the corresponding webpage on the client’s computer

(33)

Lab this week

• Create a version of the server that will allow connectionless (UDP) transfer

See if you can get the HTML transfer to work on this connection too

• Create a version of the TCP server that will

permit concurrent connections from multiple clients (*)

Referensi

Dokumen terkait