이전 포스팅에서 다뤘던 인터넷 통신의 핵심을 파헤져보고자 작성해본 내용 입니다.
IP 주소 : 각 클라이언트들이 고유하게 가지고있는 주소
패킷 : 패키지(수하물) 덩어리(버킷) 합성어
인터넷을 통한 데이터 통신은 데이터를 패킷이라는 단위로 잘게 쪼개어 주고 받습니다.
![]() | ![]() | ![]() |
|---|---|---|
| IP패킷은 데이터를 보내는 클라이언트의 IP주소와 데이터를 받을 클라이언트의 정보로 데이터를 포장합니다. ( 택배 보내는곳과 받을곳의 주소 ) | 클라이언트는 패킷으로 포장한 데이터를 인터넷 망에 흘려보냅니다. | 서버는 데이터패킷이 잘 도착했다면, 데이터를 보낸 클라이언트에게 잘 도착했다고 패킷으로 된 데이터로 응답해줍니다. |
패킷은 언제나 최적의 노드를 이용하기 때문에 언제든 다른 경로를 이용할 수 있습니다.
![]() | ![]() | ![]() | ![]() |
|---|---|---|---|
| 비연결성 | 비신뢰성 | 전달의 오류 | 애플리케이션의 구분 |
| 패킷을 받을 대상이 없거나, 받을 수 있는 상태가 아니어도 일단 전송을 합니다. | 패킷 전송중 중간 노드의 서버가 생각치 못한 오류를 발생하여 패킷이 소실될 수 있습니다. | 클라이언트가 전송한 패킷의 순서가 뒤죽박죽으로 온다면 잘못된 데이터를 전달 할 수 있습니다. 패킷은 언제나 최적의 노드를 이용하기 때문에 언제든 다른 경로를 이용할 수 있습니다. | 게임, 음악감상 등 여러 작업을 할 경우 다양한 서버에서 클라이언트에게 데이터패킷을 보내옵니다. IP프로토콜은 서버에서 보내온 데이터 패킷이 어떤 어플리케이션의 데이터인지 구분할 수 있는 기능이 없습니다. 단순히 IP주소만을 가지고 있을 뿐이기 때문입니다. |
위와 같은 문제를 해결하기위해 TCP( Transmission Control Protocol ) 이 탄생하게 되었습니다.
![]() | ![]() |
|---|---|
| 애플리케이션 계층 - 운영체제에서 구동되는 어플리케이션 전송 계층 - TCP, UDP 프로토콜을 이용하여 IP프로토콜의 단점을 보완해주는 계층 인터넷 계층 - IP패킷을 생성하여 데이터를 최종 포장하는 계층 네트워크 인터페이스 계층 - 일련의 과정을 거친 패킷들을 노드에 흘려보내는 계층 | 애플리케이션 - 데이터 생성 소켓라이브러리 - TCP 계층에 데이터 전달 TCP - 데이터에 TCP 정보 기입 및 포장 후 IP계층에 전달 IP - TCP로 감싸진 데이터에 IP정보 기입 후 네트워크 인터페이스에 전달 네트워크 인터페이스 - 이더넷 프레임을 씌우고 랜카드를 통해 노드로 전달 |
이더넷 프레임의 내용은 너무 방대하고 프론트엔드 개발에 미치는 영향이 거의 없기에 언급하지 않겠습니다.
TCP 정보 : 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증정보
![]() | ![]() | ![]() | ![]() |
|---|---|---|---|
| 연결지향 - TCP 3 way handshake ( 가상연결 ) 데이터를 받을 서버의 상태를 먼저 확인한다. SYN + ACK 동시에 가능하다. 마지막 ACK 와 함께 데이터 전달. | 데이터 전달보증 데이터를 전달받은 서버가 클라이언트에게 잘 받았다는 확인 메시지를 전달한다. ( 전달 받지 못한경우 문제가 있음을 알 수 있다.) | 순서 보장 패킷에 저장된 순서 정보를 확인하고, 잘못된 순서가 있을경우 다시 요청한다. 데이터를 받는 서버를 최적화하면 내부적으로 정리가 가능하다고 한다. 하지만 기본은 다시 요청하는 것. | 애플리케이션구분 지정된 포트에 지정된 어플리케이션과 데이터 통신을하는 전용 공간을 부여함으로 각 어플리케이션 구분 가능 |
| 해결 가능한 IP의 단점 비연결성 | 해결 가능한 IP의 단점 비신뢰성 | 해결 가능한 IP의 단점 전달의오류 | 해결 가능한 IP의 단점 애플리케이션구분 |
TCP의 단점 : TCP정보 추가, 서버검증의 과정을 거치는 가운데 용량도 커지고 시간도 길어집니다. ( 이미 구축된 프로토콜이기때문에 최적화를 더 할 수 없다. 현재 90프로이상 사용중
UDP의 장점 : 반면 UDP는 본인이 최적화를 더 할 수 있. (최근 각광받고있음)
이하 TCP/IP 를 묶어서 칭하겠습니다.

