[네트워크] 한양대 컴퓨터 네트워크 이석복 교수님 2015년 - 3. 애플리케이션 계층 1

June·2021년 5월 25일
0

Socket Programming

What is a socket?

소켓이란 OS에서 제공해주는 API의 일종이다.

Two essential types of sockets

TCP 타입과 UDP타입, 두 타입이 있다.

Sockets API

Big picture: Socket Functions (TCP case)

bind()는 특정 포트번호와 연결하는 것이다.

Socket Creation and Setup

Function: socket

Function: bind

Function: listen

Function: accept

Sockets API

Function: connect

Recap: TCP socket connection setup

클라이언트에서 bind를 쓰지 않는 이유는, 클라이언트는 특정 포트에 관계없이 아무거나 써도 되기 때문이다.

Sample code: server

클라이언트의 요청이 들어올때까지 기다리고 있는다.

Client

Functions: write

Functions: read

Big picture : UDP Socket Functions

Function: close

Tip: Release of ports

Ctrl + C를 눌러서 강제종료하는 경우, 포트가 바로 release되지 않고 os가 한동안 들고 있을 수 있다. 그런 경우를 대비해서 signal을 주어 release하는 코드를 넣으면 좋다.

Chapter 3 outline

Multiplexing/demultiplexing

multiplexing은 (sender)컴퓨터 내부에 프로세스들이 많이 있는데, application에서 transport로 내려오는데 받아서 segment로 만들어서 내려준다. 여러개로 내려와도.

demultiplexing은 (receiver)transport에서 메시지를 받아서 알맞는 application port로 하나를 올려주는 것을 말한다.

How demultiplexing works

segment는 data와 header로 이루어진다. header내에 여러가지 접오가 있는데 중요한 것이 source port #과 dest port #이다.

목적지 IP 주소는 네트워크 계층에서 적힌다.

Connection-oriented demultiplexing: Threaded Web Server

TCP에서는 source ip, soource port, dest ip, dest port를 이용해서 구분한다. 하나라도 다르면 다른 곳에 demultiplexing된다.

Chapter 3 outline

UDP: User Datagram Protocol

UDP: more

header에 어떤 필드가 있는지 아는 것이 중요하다.
port를 나타내는데 16bit가 사용되므로, 2^16개의 포트번호가 가능하다.

checksum은 내용에 에러가 있는지 없는지 확인하는 것이다. udp를 받았을 때 checksum이 정상이면 데이터가 정상이라는 것이다.

0개의 댓글