대부분 응용 프로그램이 네트워크 연결을 기반으로 개발되어 네트워크 프로토콜과 기술이 발전하고 있다.
일반적인 네트워크 애플리케이션은 2개의 서로 다른 종단 시스템에 존재하는 Client 프로그램과 Server 프로그램으로 구성되어 있다. Client와 Server 프로그램을 수행하면, Client와 Server 프로세스가 소켓으로부터 읽고, 소켓에 쓰기를 통해서 서로 통신한다.
응용프로그램에서 만든 데이터는 소켓을 통해 운영체제로 전달되어 TCP/IP 계층을 통해 원하는 목적지에 전달된다.
앞에서 계속 언급하고 있는 소켓이란, 운영체제 계층 간의 인터페이스 역할을 하는 것이라고 할 수 있다.
데이터에 헤더를 붙이는 위치가 운영체제에서는 전송계층부터 붙는다.
UDP를 이용한 소켓 프로그래밍
- 송신 프로세스가 데이터의 패킷을 소켓 문밖으로 밀어내기 전에, UDP를 사용할 때 먼저 패킷에 목적지 주소를 붙여 넣어야 한다.
- 패킷이 수신 소켓에 도착하면 수신 프로세스는 소켓을 통해 그 패킷을 추출하고 다음에 패킷의 콘텐츠를 조사하고 적절한 동작을 취한다.
- 목적지 호스트 IP 주소가 목적지 주소의 일부가 된다.
- 패킷에 목적지 주소를 포함함으로써 인터넷의 라우터는 목적지 호스트로 인터넷을 통해 패킷을 라우터 할 수 있다.
호스트는 하나 혹은 그 이상의 소켓을 갖는 많은 네트워크 애플리케이션 프로세스를 수행하고 있을 수 있기 때문에 목적지 호스트 내의 특정한 소켓을 식별할 필요가 있다.
▶ 소켓이 생성될 때 포트 번호라고 하는 식별자가 소켓에 할당된다.
패킷의 목적지 주소
: 호스트 IP 주소 + 소켓의 포트 번호
→ 소스 주소를 패킷에 붙이는 것은 UDP에는 하지 않은다.(하부 운영체제가 자동으로)
TCP를 이용한 소켓 프로그래밍
TCP는 연결지향 프로토콜로, Client와 Server가 서로에게 데이터를 보내기 전에 먼저 TCP 연결을 설정할 필요가 있음을 의미한다.
- TCP 연결을 생성할 때 Client 소켓 주소(IP 주소와 포트 번호)와 Server 소켓 주소(IP 주소와 포트 번호)를 연결과 연관시킨다.
- TCP 연결 후에 한쪽에서 다른 쪽으로 데이터를 보내려면 소켓을 통해 데이터를 TCP 연결로 보내면 된다.
클라이언트 프로그램에서 TCP 소켓을 생성함으로써 가능하다. 클라인언트는 TCP 소켓을 생성할 때 서버에 있는 서버의 IP주소와 소켓의 포트 번호를 명시한다. 소켓을 생성한 후 클라이언트는 세 방향 핸드셰이크를 하고 서버와 TCP 연결을 설정한다. (전송계층에서 일어나는 3-handShake를 클라이언트와 서버 프로그램은 전혀 인식 못함)
▼
서버 쪽에서 새롭게 생성된 소켓 생성인 연결 소켓와 혼동한다.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
TCP 연결이 설정된 후, 한쪽에서 다른 쪽으로 데이터를 보내려면 소켓을 통해 데이터를 TCP 연결로 보낸다.
UDP는 TCP와 달리 서버가 패킷을 소켓에 제공하기 전에 패킷에 목적지 주소를 붙여야 한다.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
애플리케이션 관점에서 볼 때 클라이언트의 소켓과 서버의 연결 소켓은 파이프에 의해 직접 연결된다. 클라이언트 프로세스는 자신의 소켓으로 임의의 바이트를 보낼 수 있으며 보낸 순서대로 서버 프로세스가 바이트를 수신하도록 TCP가 보장한다.(TCP::신뢰적 서비스 제공[송수신 가능])
'Study > Network' 카테고리의 다른 글
P2P(Peer-to-Peer)의 파일 분배, 비트토렌트 (0) | 2023.02.02 |
---|---|
웹 캐시(Web Cache)란? (0) | 2023.01.16 |
HTTP 란? (0) | 2023.01.16 |