본문 바로가기
학교공부/[컴퓨터 네트워크]

[컴퓨터 네트워크] - Application layer_Socket Programming

by 윈디개 2025. 4. 21.

이번 정리글에서는 Application layer와 Transport layer 사이에 인터페이스로 존재하는 Socket에 대해 알아보려고 한다. Application layer 프롤로그에서 socket에 대해 간단하게 정리해봤는데, 이제, 그 socket을 application에서 어떻게 작성해서 transport layer에 전달해주는지에 알아보려고 한다.

 

+)Socket에 대해서는 Transport layer에 대해서 정리할 때 자세히 다룰 것이기 때문에 이번글은 socket에 대한 프롤로그라고 생각하면 될 것 같다.


1. Socket Type

 socket type에는 2가지가 존재한다. UDPTCP인데 이는 4계층의 프로토콜이다. 간단한 특징을 정리해보면

  • UDP: 가볍고 빠르지만 신뢰성을 보장하지 않는 datagram 전송 프로토콜
  • TCP: 신뢰성을 보장하는 byte 단위 전송 프로토콜

이다. UDP부터 차례대로 알아보자.


 

-UDP

 UDP는 클라이언트와 서버 사이에 conncection을 설정할 필요가 없다. 연결 설정을 하지 않기 때문에 sender는 packet을 보낼 때, 목적지의 IP 주소와 포트 번호를 명시적으로 붙인다.

UDP의 데이터 전송 방식

 

위 그림을 참고하면, 

  1. 서버는 소켓을 만들고 열어둔다
  2. 클라이언트토 소켓을 만들고 열려있는 서버 소켓에 서버의 IP address와 port번호를 붙여 데이터를 보낸다
  3. 서버는 받은 소켓을 받아들이고 client를 식별한다
  4. client의 IP address와 port 번호를 붙여 다시 client에게 응답을 보낸다
  5. client가 소켓을 닫는다.

위와 같은 순서로 진행된다. 클라이언트와 서버 사이에는 신뢰성을 보장하지 않는 데이터 덩어리인 datagrams을 주고 받는다. UDP의 이러한 소통 방식은, 데이터가 유실될 수도 있고, 순서가 뒤바뀔 수 있다는 단점이 존재한다. 


-TCP

 이번에는 TCP에 대해 알아보자. TCP는 클라이언트와 서버 사이에 연결 설정이 필요하다. 서버의 process는 연결 대기 상태이어야 하고, 서버는 socket을 만들어놓고 연결 대기를 해놓으면, client가 socket을 만들고 서버에 접근한다. 다음 그림을 살펴보자.

TCP의 데이터 소통 방식

위 그림 따라 설명하면,

  1. 서버는 소켓을 만들고 listening(클라이언트 연결 요청 대기 상태) 상태를 유지한다.
  2. 클라이언트는 소켓을 만들고 서버의 hostid와 특정 포트를 가진 소켓에 연결 요청을 한다.
  3. 서버는 연결 요청을 승인하고 응답을 보낸다.
  4. 그 소켓으로 데이터를 주고 받고 용무가 끝나면, 클라이언트는 소켓을 닫는다.
  5. 서버도 연결을 닫는다.

TCP에 대해서는 후에 transport layer 정리글에서 더 자세하게 다룰 예정이다.


2. 정리

 지금까지 Application layer에 대해서 알아보았다. 다음 정리글 부터는 Transport layer에 대해서 알아볼 예정이다. 여러 Application과 Application layer들의 프로토콜, video 등 여러가지 많이 정리했다.

 Application layer에 대해서 공부할 때는, 이 application이 왜 등장하게 되었는지, 더 나은 방법에 대해서 생각하는 흐름을 따라 공부를 하면 더 이해하기 쉬울 것 같아서 배경과 기능에 대해서 자세히 설명했다.

 그래서, 흐름에 따라서 자연스럽게 이해하며 다시 한 번 정리하면서 공부하면 나중에도 기억에 남을 과목 중 하나가 될 것 같아 앞으로도 흐름을 중요시 하며 정리할 생각이다.