인터넷 프로토콜 (IP)
192.168.0.1 같은 숫자는 IP 자체가 아닌 IP 주소이다.
IP 주소
- 인터넷 통신 시에는 지정한 IP 주소에 데이터를
Packet 단위로 전달함
Packet

- 소스 IP(출발지), 대상 IP(도착지)를 포함하고 있어 어떤 컴퓨터에 데이터를 전송할지 판별할 수 있음
- Packet은 크게 헤더, 페이로드, 트레일러(수신여부 포함)로 구분됨
- 헤더: IP
- 페이로드: 실제로 전송할 데이터
- 트레일러: 수신여부
- 데이터를 주기만 하는 것이 아닌 받고 응답함
IP 방식의 문제점
- 애플리케이션 구분 불가
- 대상 컴퓨터의 어떤 프로그램에 사용될 데이터인지 구분할 수 없음
- 비연결성
- 수신 대상의 현재 상태에 상관없이 데이터 전송
- 대상 컴퓨터가 꺼져있을 경우 데이터를 전달받지 못함
- 비신뢰성
- 패킷이 소실되는 경우 발생
- 패킷 손상 여부를 송/수신측 모두 알 수 없음
- 패킷 순서가 섞여서 들어오는 경우 발생
- 패킷이 손실되거나 오류가 발생해도 데이터의 재전송을 진행하지 않음
TCP (Transmission Control Protocol)
데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜
3 Way HandShake
물리적으로 연결되는 것이 아님!
최소한의 논리적 연결을 통해 연결되었다고 가정하는 것

- SYN 접속 요청
- ACK 요청 수락 -> ACK가 없다면 연결 실패
- ACK
- SYN (Synchronize)
- 클라이언트가 서버에게 연결을 요청하는 첫 번째 단계
- 클라이언트는 서버에게 "연결하고싶다"는 의사를 나타내기 위해 SYN 플래그가 설정된 패킷 전송
- ACK (Acknowledge)
- 서버가 클라이언트의 SYN 패킷을 받고, 이를 확인했다는 신호를 보내는 단계
- 서버는 클라이언트의 SYN 요청을 수락한 후
자신도 연결을 시작하고 싶다는 뜻을 담아 SYN 플래그와 함께 ACK 플래그가 설정된 패킷을 클라이언트에게 전송함
- 이때 서버는 클라이언트의 시퀀스 번호에 1을 더한 값을 ACK로 응답함
TCP/IP Packet 구조
- 소스 PORT, 대상 PORT를 포함함

TCP의 장점
- 데이터 전송 여부 확인

- 패킷 순서 보장

TCP의 단점
- 연결하는 과정, 데이터 전송에 시간이 많이 소요됨
- 3 Way HandShake 과정을 거쳐야 함
- 현재 단계 이상의 최적화가 힘듦 (최소한의 논리적 연결 필요)
UDP (User Datagram Protocol)
비연결형, 신뢰성이 없는 전송 프로토콜
실시간 통신이나 스트리밍 앱에서는 빠른 전송이 중요했기 때문에 개발됨
UDP의 특징
- IP 방식과 거의 비슷함
- 3 way handshake를 하지 않음
- 데이터 전송, 응답, 순서를 보장하지 않음 (비신뢰성)
- 추가적인 기능이 거의 없음
- 기능이 없고 연결을 하지 않는 대신 속도가 빠름
- IP와 차이점으로 PORT 가 존재함
- 데이터 무결성 검사 -> 체크섬(Checksum)을 포함함
참고자료
Spring 입문 - 1주차