본문 바로가기

PROGRAMMING/전산학 기초

TCP(Transmission Control Protocol) 파헤치기

과가 과인만큼 나는 전산학 기초가 탄탄하지 못하다.

원래 IT 쪽을 꿈꾼 것도 아니었으니..으아

그래서 이제부터 전산학 기초를 하나하나 쌓아가겠다고 생각하였다!

그 결과, 대망의 첫번째 블로그는 TCP/UDP이다. 그 중 TCP를 먼저 정리해볼까 한다.


- TCP(Transmission Control Protocol, 전송 제어 프로토콜)

: 인터넷과 같이 실제의 물리적 접촉이 없는 통신 환경에서 데이터를 전송하는데 사용되는 프로토콜 중 하나로 IP와 함께 TCP/IP라는 명칭으로 널리 불린다. TCP는 양방향 프로토콜로 요청을 하면 반드시 응답을 받아야되므로 신뢰성이 있는 프로토콜이라 불린다.


* 프로토콜(protocol)

: 컴퓨터 상호간 혹은 컴퓨터와 단말간에서 통신을 할 때에 필요한 통신규약


* 통신규약

: 상호간의 접속이나 전달 방식, 통신 방식, 주고받을 자료의 형식, 오류 검출 방식, 코드 변환 방식, 전송 속도 등에 대하여 정하는 것.


TCP를 양방향 프로토콜이라 한다고 방금 언급하였다. 이렇게 양방향이 있도록 되기 위해서는 송신자(Sender)와 수신자(Receiver) 간의 세션이 수립되어야 하는 과정이 필요한데, 그 과정을 TCP 3 Way Handshake라고 부른다.

 

 


 

 

 

- TCP 3 Way Handshake

: TCP/IP 프로토콜을 이용해서 통신을 할 때 데이터를 전송하기 전 정확한 전송을 보장하기 위해 상대방 컴퓨터와 세션을 수립하는 과정. 3 Way Handshake를 직역하면 '세 방향으로 악수한다'가 된다. 직역 그대로 송신측과 수신측에 총 3개의 패킷이 생성된다는 의미이다.

 

* 패킷(packet)

: 패킷은 정보 기술에서 패킷 방식의 컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록이다. 데이터와 호 제어 신호가 포함된 2진수, 즉 비트 그룹을 말하는데 특히 패킷교환 방식에서 데이터를 전송할 때에는 패킷이라는 기본 전송 단위로 데이터를 분해하여 전송한 후 다시 원래의 데이터로 재조립하여 처리한다.

 

3 Way Handshake 과정

                                                                출처 : S.M.A.R.T(http://www.secure.pe.kr/6)

 

그림을 보면서 이해해보자. 상대방과 통신을 원한다는 의미로 송신측에서 SYN(Synchoronize, 싱크)의 Flag를 on으로 설정하고, 세그먼트(TCP 패킷)에 일련번호를 붙여 상대방에게 보낸다. 이것이 첫번째 과정이다.

세그먼트를 받은 수신측 호스트는 송신측 호스트가 보낸 패킷을 잘 받았다는 의미로 응답 메세지를 생성한다. ACK(Acknowledgement, 에크)의 Flag를 on으로 설정하고 다음에 받을 것으로 기대되는 일련번호를 붙여 보낸다. 보통 SYN 일련번호에 1을 더해 ACK 일련번호로 설정하여 보낸다. 응답과 함께 수신측에서 송신측으로 보낼 정보 역시 발송하므로 SYN의 Flag는 on으로, 자신의 Sequence Number는 어디서부터 시작한다는 일련번호를 붙여 패킷을 전송한다. SYN/ACK 패킷을 전송함으로써 양방향 세션이 수립함을 의미한다. 이것이 두번째 과정이다.

마지막으로 송신측은 수신측의 SYN 패킷을 받고 그에 대한 응답으로 ACK 패킷을 보내게 된다. 그리고 이 때부터 데이터의 전송이 이루어진다. 이것이 마지막 세번째 과정이다.

 

이렇게 세 패킷이 생성되고 주고 받는 과정을 통해 TCP가 신뢰성을 가지게 되는 것이다.

 

 


 

 

TCP에 대해서 알아보았으니 TCP/IP를 공부하며 포스팅을 마무리할까 한다.

 

- TCP/IP(Transmission Control Protocol - Internet Protocol)

: 기종이 서로 다른 컴퓨터 시스템을 서로 연결해 데이터를 전송하기 위한 통신 프로토콜이다. 아르파넷(ARPANETWORK)에서 개발된 프로토콜인데 UNIX 운영체제 내에 채용되고 인터넷에서 사용하도록 하였는데 UNIX와 인터넷의 사용자가 많아지다보니 네트워크 상에서 데이터를 전송하는 표준이 되었다.

 

TCP와 IP는 각자 하는 역할이 다르다.

상위계층(TCP) - 전송을 위하여 파일이나 메세지를 더 작은 덩어리나 패킷으로 쪼개고 수신된 패킷을 원래 형태로 재조합하는 기능을 담당한다.

하위계층(IP) - 주로 각 패킷의 주소 설정이나 경로를 다루면서 각 패킷을 알맞은 목적지로 인도하는 기능을 담당한다.

 

이렇게 간단히 볼 수도 있지만 TCP/IP의 4가지 계층을 보며 더 자세한 역할을 알 수도 있다.

응용계층 - 사용자 응용프로그램으로부터 요청을 받아서 이를 적절한 메세지로 변환하고 하위계층으로 전달하는 역할을 담당한다.

트랜스포트층 - IP에 의해 전달되는 패킷의 오류를 검사하고 재전송을 요구하는 등의 제어를 담당하는 계층이다.

인터넷층 - 전송 계층에서 받은 패킷을 목적지까지 효율적으로 전달하는 것만 고려한다.

네트워크 인터페이스층 - 특정 프로토콜을 규정하지 않고 모든 표준과 기술적인 프로토콜을 지원하는 게층으로서 프레임을 물리적인 회선에 올리거나 내려받는 역할을 담당한다.

 

TCP 3 Way Handshake 개념에 대한 원문을 보려면?

- S.M.A.R.T