인터넷 통신은 어떻게 이뤄지는가?
- 클라이언트에서 다른 클라이언트(컴퓨터)로 데이터를 보낼 경우, 통신 서버와 같은
노드
들을 거쳐 상대 클라이언트에 도달한다.
- 상대 클라이언트를 찾아가는 과정을 이해하기 위해서, 우선
IP(인터넷 프로토콜)
에 대해 알고 있어야 한다.
- 지정한 IP 주소에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터를 전달한다.
패킷은 전송하고자 하는 데이터의 한 블록(payload)과 주소지 정보(발신지 주소, 목적지 주소), 관리 정보(Header, IPv6와 같이 망이 패킷을 목적지까지 전달하는데 필요한)로 구성된다.
- 좌측의 클라이언트에서 상대 클라이언트로 패킷을 전달한다.
- 상대 클라이언트(우측)에서는 패킷을 받았다고 응답을 할 수 있으며, 해당 응답 패킷을 전달한다.
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 그냥 전송한다.
- 패킷이 중간에 소실될 경우 문제가 생긴다.
- 패킷이 순서가 보장되지 않는다.
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 여러 개일 경우 어떻게 구분하는가?
- Ex : 한 컴퓨터에서 게임을 하는데 카카오톡을 켜놓은 상태이다.
설명 | |
---|---|
애플리케이션 계층 - HTTP, FTP | 무엇인가 비즈니스 로직 혹은 특정 제품을 만들어내는지에 따라 탄생하는 데이터 전송에 대한 약속(규칙) 계층 |
전송 계층 - TCP, UDP | 물리적으로 연결하고, 경로를 지정했으면 이제 데이터를 전송해야 하는데, 데이터를 전송하는 방법을 정의하는 계층 |
인터넷 계층 - IP | 방대한 인터넷 계층에서 어디로 보낼지 경로를 선택하는 것이 IP 계층이다 이 자체로는 비연결 지향적이며 신뢰성이 없고 데이터를 전송한 이후 발생하는 문제에 대해서는 신경 쓰지 않는다. |
네트워크 인터페이스 계층 | 물리적인 영역을 표준화하는 계층으로 실제로 랜선을 꼽는 랜카드나 랜카드 드라이버 등이 이에 속한다. |
- 기존 IP 패킷 정보의 한계인
비신뢰성
과비연결성
을 TCP 정보를 추가함으로써 한계를 극복했다.
- 연결 지향 -
TCP 3 way handshake
(가상 연결)
1. SYN(Synchronizer) 접속 요청 메시지 전송
2. SYN + ACK 요청 수락
3. ACK (with 데이터 전송 가능)
💡 이 상태에서는 개념적으로 연결된 것으로 그 사이의 수많은 노드들과의 연결이 되었는지는 알 수 없다.
- 데이터 전달 보증
- 클라이언트에서 데이터를 전송하면 서버에서 데이터가 잘 왔는지에 대한 응답을 해서 데이터 전달을 보증한다.
- 순서 보장
-
패킷의 순서가 잘못 도착했을 경우 잘못 전송된 패킷을 기준으로 다시 보내라고 요청을 한다.
패킷 데이터의 순서 보장
-
TCP 정보에 PORT부터 순서와 같은 정보들이 포함되어 있기에 가능하다.
- 신뢰할 수 있는 프로토콜
- 현재 대부분이 TCP를 사용한다.
- TCP에 비교해
기능이 거의 없다.
연결 지향 - TCP 3 way handshake
❌,데이터 전달 보증
❌,순서 보장
❌- 몹시 단순하기에 속도가 빠르다.
- IP와 거의 유사하지만 PORT 정보, 체크섬 추가
- 애플리케이션에서 추가적인 작업이 필요하다.
해당 IP에 도착하여 서버를 만났을 때, 돌아가고 있는 애플리케이션이 2개 이상이라면 어떤 애플리케이션에 데이터를 전송해야 할까 ❓
IP를 아파트
, PORT를 호수
로 비유하면 이해가 쉽다.
위에서 봤던 패킷 정보인데,
TCP
(혹은 UDP) 라면 출발지와 목적지의 IP뿐 아니라
PORT 정보
도 담겨있는 걸 볼 수 있다.
0
~65535
할당 가능0
~1023
: 잘 알려진 포트이기에 사용하지 않는 것을 추천- FTP -
20
,21
- TELNET -
23
- HTTP -
80
- HTTPS -
443
- FTP -
인터넷 통신을 위해 IP(with PORT)가 필요하다고 했는데, 이 IP에는 몇 가지 단점이 있다.
-
가독성이 떨어지고 외우기 힘들다. : 200.200.200.1, 혹은 174.254.162.74 이런 식의 아이피는 가독성이 떨어진다.
-
IP는 변경될 수 있다. : 200.200.200.1로 주소를 기억하고 있는데, 변경돼서 200.200.200.3이 된다면 대응하는 게 까다롭다.
- 일종의 전화번호부와 같으며 도메인 명을 IP 주소로 변환한다.