본문 바로가기
[ ★ ]Study/Network

TCP 프로토콜 (2)

by nroses-taek 2017. 6. 10.

TCP는 어떠한 역할을 할까?

TCP의 기능에대해서 알아보자.

*** 참고 사항 게시글 http://nroses-taek.tistory.com/82 ***

TCP가 하는 일

 

 주소지정/다중화 : 많은 애플리케이션이 TCP를 전송 프로토콜로 사용한다. 그래서 TCP와 쌍을 이루는 UDP와 마찬가지로, 여러 프로세스에서 온 데이터를 다중화하여 하위 네트워크 계층 프로토콜로 송신되도록 하는 것은 TCP의 중요한 임무다. 동시에 이들 상위 계층 애플리케이션은 TCP 포트를 통해 식별된다.

 ◆ 연결 수립, 유지, 종료 : TCP는 장비가 데이터를 이동시킬 수 있는 연결을 협상하고 수립하기 위해 따라야 할 절차 모음을 제공한다. 일단 연결이 수립되면 TCP는 연결을 유지하고 혹시 발생할지 모르는 문제를 처리하기 위한 방법이 있다. 그리고 장비가 TCP 연결로 할 일을 마치면 그 연결을 종료하기 위한 특수한 절차도 수행된다. 이는 TCP 프로토콜 (1) 에서 설명하였다.


  데이터 처리와 패키징 : TCP는 애플리케이션이 상위 계층에서 데이터를 송신할 수 잇는 방법을 제공한다. 이 데이터는 메시지로 패키징되고 목적지 TCP 소프트웨어로 전달된다. 목적지 소프트웨어는 데이터 패키징을 풀고 애플리케이션에게 전달한다.


  데이터 전송 : 개념적으로, 송신 장비의 TCP 구현은 패키징된 데이터를 다른 장비의 TCP 프로세스로 전달할 책임이 있다. 계층화 원칙을 따르면, 이러한 전송은 송신 머신의 TCP 소프트웨어가 데이터 패킷을 하위 네트워크 계층 프로토콜인 IP로 전달하여 이루어진다.


  신뢰성과 전송 품질 서비스 제공 : TCP는 애플리케이션이 데이터를 신뢰할 수 있게 송신할 수 있도록 여러 서비스와 기능을 제공한다. 이것은 일반적으로 TCP 애플리케이션은 송신된 데이터가 목적지에 도달하지 않거나 잘못된 순서로 나타나는 것을 걱정하지 않아도 된다는 것을 의미한다. 그리고 이것은 IP를 직접 사용했을 경우 발생하는 여러 무네도 피할 수 있다는 것을 의미한다.


  흐름 제어와 혼잡 회피기능 제공 : Flow Control, Congestion Control이라고 TCP 프로토콜 (1) 에서 설명하였다. 참고하길 바란다.



TCP가 하지 않는 일

※ TCP는 모든일을 하지 않는다. 때때로 TCP는애플리케이션이 인터네트워크를 사용하는 데 필요한 모든 일을 하는 것처럼 기술된다. 하지만 TCP는 제약이 있으며 TCP 설계자들이 구체적으로 다루지 못한 일부 영역도 있다.

 

◆ 애플리케이션 사용 명시 : TCP는 전송 프로토콜만을 정의한다. 그래서 애플리케이션이 어떻게 TCP를 사용해야 하는지 구체적으로 명시하지 않는다. 그것은 애플리케이션 프로토콜의 몫이다. 

◆ 보안 제공 : 나중에 포스팅할 내용에도 보안이 포함되어 있다. 단지 이것은 참고만 바란다. TCP는 전송하는 데이터의 인증이나 프라이버시를 보장하기 위한 어떤 방법도 제공하지 않는다. 인증과 프라이버시가 중요한 애플리케이션은 다른 수단을 사용해야만 한다. 애초에 네트워크는 보안을 하나도 고려하지 않고 설계됐다.

◆ 메시지 경계 유지 : TCP는 데이터를 분리된 메시지가 아닌 연속된 스트림으로 송신한다. 한 메시지가 어디에서 끝나고 다음 메시지는 어디에서 시작되는지를 명시하는 것은 애플리케이션에게 달려 있다.

◆ 통신 보장 : TCP는 승인을 받지 않은 전송을 탐지하고 필요할 경우 재전송한다. 그렇지만 어떤 문제가 통신을 방해할 경우에 TCP가 할 수 있는 것은 계속 재전송을 시도하는 것 밖에 없다. TCP는 실제로 통신을 보장할 수 없다. 왜냐하면 TCP의 제어 하에 있지 않은 것이 너무 많기 때문이다. 이와 비슷하게, TCP는 데이터 흐름을 관리혀라는 시도를 할 수 있지만 모든 흐름 관련 문제를 해결할 수는 없다.



견고성 원칙

TCP표준은 TCP가 견고성 원칙(robustness principle)을 따른다고 설명한다. 견고성 원칙은 "자신이 수행하는 작업은 보수적으로, 다른 사람에게서 무언가를 받을 때는 관대하게"로 표현할 수 있다. 이 규칙이 의미하는 것은 모든 TCP 구현은 다른 장비의 TCP 계층에 문제를 일으킬 수 있는 일을 하지 않으려고 노력한다는 것이다. 동시에 모든 TCP구현은 다른 TCP 구현이 만들 수 있는 문제를 예상하고 그러한 문제를 적절하게 해결하려고 노력해야 한다.

이 원칙은 TCP 동작에 있어 비정상적인 상황에 대한 추가적인 보호를 제공할 수 있도록 한다. 사실 이 일반 원칙은 TCP/IP 프로토콜 슈트의 많은 기타 프로토콜에 적용됐으며 거기에서 가치를 입증했다.


'[ ★ ]Study > Network' 카테고리의 다른 글

TCP 에코 서버 클라이언트 (리눅스)  (0) 2017.06.11
TCP 에코 서버 예제 (리눅스)  (0) 2017.06.11
TCP 프로토콜 (1)  (0) 2017.06.09
WSACleanup 함수(Windows)  (0) 2017.03.15
WSAStartup 함수 (Window)  (0) 2017.03.15

댓글