Computer Science/Network

[Network] TCP/IP Server와 Client의 통신 구조

JeongKyun 2021. 12. 30.

서론

이번글에서는 개발자라면 한번씩은 들어봤을 tcp/ip 통신 방식과 서버와 클라이언트 간의 통신 구조에 대해 알아볼 것이다. 우선 TCP/IP가 뭔지부터 알아보자.

 

TCP/IP란?

먼저 간단히 정의하면 TCP/IP는 컴퓨터와 컴퓨터간의 기본적인 통신규약(프로토콜)이다. TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP(Internet Protocol)와 전송 조절 프로토콜인 TCP(Transmission Control Protocol)로 이루어져 있는 구조이며 이 중 IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있고, TCP는 IP 위에서 동작하는 프로토콜로 데이터의 전달을 보증하고 보낸 순서대로 받게 해주는 속성을 갖고있다.

 

우리가 흔히 볼 수 있는 HTTP와 FTP, SMTP 등 이 모든것이 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 동작하기 때문에 명칭을 TCP/IP라고 명칭이 정해졌다고 한다.

 

 

TCP, IP 간략 정리

TCP - > 서버와 클라이언트간에 데이터를 신뢰성있게 전달하기 위해 만들어진 프로토콜이다.

IP -> 컴퓨터와 컴퓨터간 데이터 패킷을 전송하기 위해 만들어진 장치간 주소개념이다.

 

 

사용 용어

추가적으로, tcp/ip는 3Way HandShaking이라는 방법을 이용하여 보다 신뢰성 있는 통신을 주고받는다. 이 용어도 자세히 알아보면 되게 많은 내용이 있지만 간략히 사용 용어들만 정리해보자.

 

ACK(Positive Acknowledge) - 통신 잘 받음 (OK)

NAK(Negative Acknowlede) - 통신 못 받음 (NOT OK)

 

위의 용어는 실제 네트워크 개발 간 자주 쓰이는 용어이다. 알아두면 좋을 것 같다.

 

Server와 Client 통신 구조

이제 이 실제 TCP/IP 통신을 Server와 Client간의 통신 방식을 손으로 그려보았다.

악필이지만 보는데는 이상 없을거라고 생각한다.

S : 서버, C : 클라이언트

 

통신 구조를 순서로 정렬해보면..

위의 방식으로 서버와 클라이언트가 통신 구조를 가지며, 순차적으로 설명을 드리면

1. 서버와 클라이언트 모두 소켓을 우선 연다.

2. 서버에서 Bind함수를 사용해서 ip,port를 소켓에 bind시킨다.

3. bind된 소켓을 listen상태로 만든다. (클라이언트가 해당 포트로 언제든 접속할 수 있게끔 대기상태)

4. 클라이언트에서 해당 ip,port로 connect를 한다.

5. 서버는 들어온 클라이언트의 액션을 Accept해준다.

6. 이제 서버와 클라이언트는 서로 터널이 뚤렸다고 보면되고 서로 약속된 프로토콜로 데이터를 주고받는다.

7. 사용을 다했으면 양쪽 다 Close한다.

 

이런 방식으로 진행이 되며 이 안에는 각 상황에 맞는 인코딩과 프로세스 구현 방식이 담겨진다.

 

TCP/IP를 자세히 알아보면 7계층부터 뭐 이것저것 내용이 정말 많지만 너무 딥하게는 안들어가고 TCP/IP 네트워크 구조로 통신을 할 때 필요한 내용들로만 작성해보았다. 

 

 

 

반응형

댓글

💲 많이 본 글