IP, TCP, UDP 프로토콜과 패킷 그리고 PORT
IP(Internet Protocol)
: 서로 다른 운영체제 등을 사용하는 다양한 컴퓨터들이 서로 통신할 때 사용하는 약속된 데이터 이동 간의 규약이다.
- 인터넷에서 메일 확인, 파일 전송 등의 모든 컴퓨터(서버) 간 데이터 통신에 대한 규약
- 필요성
: 데이터의 안정적, 효율적 전송 보장을 위해 데이터를 패킷 단위로 분할해 전송하고 받는 쪽에서 재조립된다.
//데이터가 너무 크면 네트워크 대역폭(일정시간 내 네트워크 연결을 통해 처리할 수 있는 데이터 양)을 많이 차지해 다른 패킷의 흐름을 막고 특정 지점에서 막히거나 느려질 위험이 있다.
- 한계
- 비연결성: 패킷을 받을 대상의 현재 상태에 상관없이(서버 부재 또는 서비스 불능 상태에도) 패킷을 전송한다.
- 비신뢰성: 패킷 분실, 패킷 순서가 섞이는 문제 등이 발생할 수 있고 패킷 손상 여부를 송수신측 모두 알 수 없으며 패킷 손실,
오류 발생에도 데이터를 재전송하지 않다.
= 내용물 상태 보장X => TCP 프로토콜의 3 Way HandShake 과정으로 해결 가능
- 애플리케이션 구분 불가: 대상 컴퓨터의 어떤 프로그램에 사용될 데이터인지 구분할 수 없다.
=> PORT로 해결 가능
- IP 주소(IP Address)
: 데이터 송수신을 위해 필요한 데이터의 목적지의 고유주소로 기기를 식별할 수 있는 번호이다.
- 체계
1) IPv4 방식(IP version 4): 32비트 크기로 8비트씩 4개의 숫자가 '.'으로 구분된 10진수 표기법
- ex) 111.115.121.11
- 인터넷 사용자 수 급증으로 주소 고갈 위기 발생 => IPv6 등장
2) IPv6 방식 (IP version 6) : 128비트 크기로 확장한 차세대 IP 주소로 8개의 숫자가 ':'으로 구분된 16진수 표기법
- ex) 2dfc:0:0:0:0217:cbff:fe8c:0
- 속도, 보안 등의 면에서 뛰어나나 기존 주소체계 변경에 소모되는 비용이 커서 아직 완전히 상용화되지 않았다.
TCP(Transmission Control Protocol)
: 서버와 클라이언트 간 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜
- 3 Way HandShake 과정을 거쳐 컴퓨터를 연결한다.
- 3 Way HandShake
: 물리적이 아니라 논리적으로 컴퓨터를 연결하는 과정이다.
1) Syn(Synchronize Sequence numbers)
: 클라이언트가 서버에게 연결을 요청하는 첫 단계
- 클라이언트 -> 서버
- SYN 플래그가 설정된 패킷을 서버로 전송
- 패킷에는 시퀀스 번호를 포함해 데이터 전송 순서를 관리할 준비를 한다.
2) SYN-ACK
: 클라이언트의 SYN 패킷을 받고 확인했다는 의미로의 ACK 플래그와 자신도 연결을 요청하는 SYN 플래그를 설정한 패킷을 보내는 단계
- 서버 -> 클라이언트
- ACK로 응답이 오지 않으면 연결 실패
3) ACK
: 서버의 SYN-ACK 패킷을 받고 확인했다는 의미로 ACK플래그를 설정한 패킷을 전송하는 단계
- 이 단계까지 끝나면 논리적 연결이 성립
- ACK와 함께 데이터 전송 가능
- 특징: 신뢰성 보장
- 데이터 전송 여부 확인: 소스 IP의 컴퓨터에서 패킷 전송 시 대상IP에서 데이터를 잘 받았다는 응답을 반환한다.
- 패킷 순서 보장: 대용량 데이터가 패킷 단위로 분할돼 전송됐을 때 2번 패킷이 먼저 도착할 경우 1번 패킷을 재요청하거나 1번 패킷 도착 전까지 대기하는 방식으로 순서를 보장한다.
- 한계
: 3 Way HandShake 과정을 항상 거치기 때문에 데이터 수송신에 시간이 많이 소요된다.
UDP(User Datagram Protocol)
: 비연결성, 비신뢰성을 지니는 전송 프로토콜로 TCP의 느린 전송 속도를 극복하기 위해 개발되었다.
- 빠른 전송 속도에 특화되어있는 프로토콜이다.
- 특징
- IP 방식과 유사: 3 Way HandShake 과정을 거치지 않아 비신뢰성을 지닌다.
- 빠른 속도: 추가적인 기능이 거의 없고 연결을 하지 않는 대신 속도가 빠르다.
- PORT 존재: IP와의 차이점이다.(TCP에도 PORT존재)
- 체크섬 포함: 데이터 무결성 검사로 잘못된 데이터가 전송되지 않도록 한다.
패킷
: 네트워크에서 데이터를 주고받을 때 사용되는 데이터 조각이다.
- 구성
- 헤더: 패킷에 대한 메타 정보: 소스 IP주소, 대상 IP 주소, 소스 PORT, 대상 PORT, 패킷 길이, 번호, 네트워크 프로토콜 등
- 페이로드: 실제 데이터
- 트레일러: 패킷 끝에 붙는 정보로 오류 검출 및 패킷 전송의 종류 신호 제공
- 수신여부 포함 => 데이터 주기만 하는 것이 아니라 받고 응답한다.
PORT
: 같은 IP주소 내에서 프로세스 구분 위해 사용하는 것으로 0~65535까지의 숫자로 구성되어 있다.
- IP 주소 = 동
- PORT = 호수
- 이미 사용되는 포트: 0~1023
: 국제 도메인 관리기구에 의해 관리된다. 0~1023은 사용하지 않는 것이 좋다.
- FTP - 20, 21 (TCP)
- SSH - 22 (TCP)
- 텔넷 - 23 (TCP)
- SMTP - 25 (TCP)
- DNS - 53 (TCP/UDP)
- DHCP - 67 (UDP)
- HTTP - 80 (TCP)
- HTTPS - 443 (TCP)
- RDP - 3389 (TCP/UDP)