❓ 네트워크 지식이 왜 필요할까?
- 우리는 사용자가 요청을 했을 때 해당 요청에 대한 응답을 수행하는 프로그램 즉, 서버를 개발하게 된다.
- 사용자의 요청에서 시작하여 우리가 만든 서버에 도착하고 다시 사용자에게 응답이 되돌아가는 흐름을 잘 파악하고 있다면 서버 개발에 큰 도움이 된다.
- 인터넷 브라우저(클라이언트)와 서버가 데이터를 주고받는 통신 방법인 HTTP(HyperText Transfer Protocol)는 결국, Web 기반에서 동작하기 때문에 네트워크에 대한 지식은 필수이다.
📕 목차
- 인터넷(Internet)
- 인터넷 프로토콜 IP(Internet Protocol)
- TCP(Transmission Control Protocol)
- UDP(User Datagram Protocol)
- PORT
1. 인터넷(Internet)
인터넷(Internet)
- 전 세계의 컴퓨터와 스마트폰, 서버 같은 기기들을 서로 연결해주는 거대한 네트워크이다.
- 인터넷 구축 방법
- 해저 광케이블 - 유선 연결
- 인공위성 - 무선 통신
해저 케이블처럼 유선 방식, 인공위성처럼 무선 방식이 함께 사용돼서
World Wide Web (전 세계를 잇는 거미줄) 처럼 구성되어 있다.
2. 인터넷 프로토콜 IP(Internet Protocol)
인터넷 프로토콜 IP(Internet Protocol)
- 네트워크에서 데이터를 주고받기 위한 기본 통신 규칙(Protocol) 이다.
IP 주소
- 네트워크에서 각각의 장치를 식별하기 위한 고유한 주소
- 이 주소가 있기 때문에 어떤 기기로 데이터를 보낼지를 정확히 알 수 있다.
- 인터넷에서 데이터를 전송할 때는 이 IP 주소를 기반으로 Packet(패킷)이라는 단위로 나눠서 전송하게 된다.
패킷 (Packet)
- 전송할 데이터를 일정 크기로 나눈 단위이다.
- 패킷에 포함되는 정보
- 소스 IP: 출발지 주소
- 대상 IP: 도착지 주소
- 헤더: 제어 정보 (전송 순서 등)
- 페이로드: 실제 전송할 데이터
- 트레일러: 수신 여부 확인, 오류 검사 등
- 패킷 하나만 보면 누가 누구에게 어떤 데이터를 보냈는지를 알 수 있다.
- 단순히 데이터를 보내는 것이 아닌 받은 후 응답까지 한다.
IP 방식의 문제점
- 애플리케이션 구분의 어려움
- 어느 컴퓨터로 데이터를 보낼 것인지는 알려주지만, 그 컴퓨터 안의 어떤 프로그램(애플리케이션)으로 보내야 할지는 알지 못한다.
- 비연결성
- IP는 비연결형 프로토콜이다.
- 데이터를 보내기 전에 상대가 준비되어 있는지 확인하지 않고 무조건 전송한다.
- 비신뢰성
- 데이터 전달에 대해 아무런 보증을 하지 않는다.
- 패킷 손실: 데이터가 중간에 사라질 수 있다.
- 패킷 손상: 데이터가 중간에서 손상될 수 있다.
- 패킷 순서 뒤바뀜: 나눠 보낸 데이터가 순서가 뒤섞여 도착할 수 있다.
- 데이터 전달에 대해 아무런 보증을 하지 않는다.
위와같은 문제점들을 해결해주는 것이 TCP 프로토콜 이다.
4. TCP(Transmission Control Protocol)
TCP(Transmission Control Protocol)
- 서버와 클라이언트 간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜이다.
3 Way HandShake
- TCP는 데이터를 신뢰성 있게 전달하기 위해 3 Way HandShake 방식을 사용한다.
- 3 Way HandShake 방식
- SYN 접속 요청
- 클라이언트가 서버에게 연결을 요청하는 단계이다.
- 클라이언트는 SYN 플래그가 설정된 패킷을 전송하고, 연결을 시작하고 싶다는 의사를 전달한다.
- 이때 패킷에는 시퀀스 번호가 포함되어, 데이터 전송 순서를 관리할 준비를 한다.
- ACK 요청 수락
- 서버가 클라이언트의 SYN 패킷을 받고 이를 확인했다고 응답하는 단계이다.
- 서버는 클라이언트의 요청을 수락하며, SYN + ACK 플래그가 설정된 패킷을 전송한다
- 서버는 클라이언트의 시퀀스 번호에 1을 더한 값을 ACK로 응답한다.
- ACK 확인
- 클라이언트는 서버의 응답을 받고 연결이 수립되었음을 확인한 후 데이터를 전송할 준비를 한다.
- SYN 접속 요청
- 장점
- 데이터 전송 여부 확인 가능
- 데이터를 전송한 후 응답을 받기 때문에 데이터가 잘 전송되었는지 확인할 수 있다.
- 패킷 순서 보장
- 데이터를 나누어 보내더라도, TCP는 패킷의 순서를 보장한다.
- 여러 패킷으로 나눠서 전송되더라도 순서대로 재조합해서 전송한다.
- 데이터 전송 여부 확인 가능
- 단점
- 신뢰성을 보장하지만, 그만큼 속도가 느리다.
- 3 Way HandShake 과정에서 연결을 설정하는 데 시간이 걸리고, 데이터 전송 속도 또한 상대적으로 느리다.
- 신뢰성을 보장하지만, 그만큼 속도가 느리다.
5. UDP(User Datagram Protocol)
UDP(User Datagram Protocol)
- 비연결형, 신뢰성이 없는 전송 프로토콜이다.
- TCP의 신뢰성 보장 기능은 많은 애플리케이션에서 유용했지만, 실시간 통신이나 스트리밍 애플리케이션에서는 빠른 데이터 전송이 더욱 중요했기 때문에 UDP는 이러한 요구를 충족하기 위해 개발되었다.
- IP 방식과 비슷하다.
IP와 UDP의 차이점: 포트(Port)
- IP는 데이터를 전송하는 경로를 정의하지만, 특정 애플리케이션을 지정하거나 여러 애플리케이션 간의 구별을 할 수 없다.
- UDP는 포트를 사용하여 여러 애플리케이션이 동일한 IP 주소에서 서로 다른 데이터를 받을 수 있도록 한다.
6. PORT
PORT
- 네트워크 통신에서 프로세스 또는 애플리케이션을 구별하기 위해 사용되는 번호이다.
- 각 애플리케이션을 구별할 수 있는 식별자 역할을 한다.
- IP 주소가 특정 장치를 지칭한다면, PORT는 그 장치 내에서 실행 중인 프로그램을 구별하는 역할을 한다.
PORT 번호의 범위
- 0 ~ 65535 할당 가능
- 이미 사용되고 있는 포트 (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)
'Spring > 강의' 카테고리의 다른 글
[📕 기초 Spring] 2-1. 프레임워크와 라이브러리 (1) | 2025.05.03 |
---|---|
[📕 기초 Spring] 1-4. Web Application (0) | 2025.05.03 |
[📕 기초 Spring] 1-3. HTTP (1) | 2025.05.03 |
[📕 기초 Spring] 용어 모음집 (0) | 2025.05.03 |
[📕 기초 Spring] 1-2. Web 기초 (0) | 2025.05.03 |