데이터를 전송하는 핵심프로토콜 TCP/IP
통신규약으로 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다. 통신 프로토콜은 신호 체계, 인증, 그리고 오류 감지 및 수정 기능을 포함할 수 있다.
즉, 서로 다른 시스템에 있는 개체 간에 성공적으로 데이터를 전송하는 통신규약이다.
(네트워크에 연결된 컴퓨터들끼리 데이터를 주고받을 수 있도록 미리 약속한 전송 규약 및 규칙)
IP와 TCP
패킷
이란 package
과 bucket
의 합성어로
통신망을 통해 전송하기 쉽도록 자른 데이터의 전송 단위이다.
우체국에서 화물을 적당한 덩어리로 나눠 행선지를 표시하는 꼬리표를 붙이는데, 이러한 방식을 데이터 통신에 접목한 것.
IP
는 인터넷 프로토콜(Internet Protocol)
로 불리며 개별 패킷의 형식을 지정하고 패킷을 전송하는 방법을 정의한다.
TCP
는 전송 제어 프로토콜(Transmission Control Protocl)
로 불리며, IP
패킷을 데이터 스트림으로 결합하고 서비스에 연결하는 방법을 정의한다.
이 두 프로토콜을 합쳐서 TCP/IP
라고 한다!
프로토콜 계층
TCP/IP가 많이 사용되면서 흔히 사용되던 OSI 7계층을 더욱 추상화 한 TCP/IP 4계층이 등장했다. TCP / IP에는 아래와 같이 4개의 층이 있다.
여러개의 프로토콜 계층이 있는데,
내가 이해한게 맞다면 전송계층에 해당되는 TCP는 네트워크 계층에 해당되는 IP에 의존적이고 상위 서비스인 Application에
데이터를 제공한다.
[Plus 개념]
책에서 말하는 UDP는 전송 계층에 해당되고 TCP와 같은 위치에 존재한다.
UDP와 TCP의 차이는 양방향 스트림이 필요하지 않는 데이터 교환에 사용된다하며, 패킷을 효율적으로 전송할 용도로 쓰인다고 한다.
DNS, 비디오스트리밍, VoIP, 일부 온라인 게임 등이 UDP를 사용한다. (단방향적?)
즉, IP의 부족한 능력을 TCP가 보완하여 데이터를 Application 계층에 전달한다?
IP의 특징
IP는 데이터 조각을 최대한 빨리 대상 IP 주소로 보내는 역할을한다.
이 데이터 조각들의 순서가 뒤바뀌거나 일부가 누락되어도 크게 상관하지 않고 그저 보내는데 집중을 한다. (신뢰성없는 unreliable)
IP에는 상태를 관리하거나 기억하는 기능이 없고 어떤 패킷이 다음 게이트웨이로 전달되고 나면 그 패킷에 대해 아무것도 기억할 필요가 없다.(비연결형 connectionless)
TCP 의 특징
TCP는 IP보다 느리지만 꼼꼼한 방식을 사용한다. 도착한 조각을 점검하여 줄을 세우고 망가졌거나 빠진 조각을 다시 요청한다.
(IP의 한계 보완)
책에서 말하는 IP의 신뢰성 없는 것
을 신뢰성 있는 통신으로 만들어내는 것을 TCP가 담당
한다.
바이트 스트림을 여러 조각으로 나누어 세그먼트(segment)
라고 하는 TCP 패킷
에 담는다.
TCP세그먼트에는 실제 데이터
뿐만 아니라 제어 정보
를 포함하는 '헤더'
도 들어 있다. 이 제어 정보
에는 수신자가 각 패킷이 스트림의 어느 부분을 나타내는지 알 수 있게 해주는 시퀀스 번호
가 포함된다.
이렇게 하여 세그먼트 분실이 일어나면 어느 세그먼트 인지 알아내서 재전송을 한다.
또한 세그먼트에는 오류 검출 정보
가 포함되어 있어 손상된 세그먼트도 찾아낼 수 있다고 한다.