인터넷(Internet)
📌 인터넷(Internet)은 인터넷 프로토콜 스위트(TCP/IP)를 기반으로 하여 전 세계적으로 연결되어있는 컴퓨터 네트워크 통신망을 일컫는 말이다
- 대표적으로 해저에 직접적으로 깔려있는 광케이블과 인공위성을 통해서 모든 인터넷은 연결되도록 설계했는데
- 이렇게 전세계를 연결한 통신망을 World Wide Web(WWW)이라 한다.
인터넷 프로토콜 IP(Internet Protocol)
📌 인터넷 프로토콜은 인터넷이 통하는 네트워크에서 어떤 정보를 수신하고 송신하는 통신에 대한 규약()을 의미한다.
- 우리가 흔히 알고 있는 192.168.0.1를 IP라고 부르지만 이는 IP주소라고 한다.
- 즉 IP는 인터넷 통신법, IP주소는 전화번호라고 생각하면 된다. 전화번호를 제대로 입력하고 통화를 연결하지 않으면 안되는 일종의 법칙으로 IP에 포함된다 할 수 있다.
[1] IP 주소
- IP 주소는 쉽게 말하면 각 기기 간의 통신을 식별할 수 있는 전화번호 입니다.
- 앞서 설명한 최소한의 규칙을 지킬 수 있는 이유는 여러분들이 잘 아시는 IP 주소 덕분입니다.
- 인터넷 통신 시에는 지정한 IP 주소에 데이터를 Packet 이라는 단위로 전달합니다
IP를 이용한 통신의 한계
- 비연결성
- 패킷을 받을 대상이 없거나 대상이 서비스 불능 상태여도 전송을 해버립니다.
- 비신뢰성
- 패킷소실 : 데이터 통신중 패킷이 사라질 가능성이 있습니다.
- 패킷 전달의 순서가 보장되지 않습니다.
ex) 클라이언트는 (Hellow) (world!)로 보냈으나 서버에는 (world!)(Hello)로 도착할 가능성이 있습니다.
- 프로그램 구분이 어렵습니다
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 구분이 어렵습니다.
Packet
📌 패킷(Packet)은 소스 IP, 대상 IP를 포함하고 있어서 어떤 컴퓨터에 데이터를 전송할지 판별할 수 있습니다.
- Packet은 크게 헤더( 주소 라벨 ), 페이로드( 배달하려는 물건 ), 트레일러( 검증 및 확인용 정보 )로 구분됩니다.
- 데이터를 주기만 하는 것이 아닌 받고 응답한다.(중요)
- 패킷 = 배달 상자 라고 보면 편하다. 인터넷 통신은 크게보면 쿠팡과 같은 배달 산업과 유사하다. 앞으로의 이해도 배달을 기준으로 설명하도록 하겠습니다.
[1] 헤더(Header):
배달물의 주소 라벨이라고 볼 수 있습니다.
- 보내는 사람과 받는 사람의 주소, 연락처 등 배송 정보를 포함합니다.
- 배달원이 어디로 가야 할지, 누구에게 전달해야 할지를 알려주는 역할을 합니다.
💡 예: 보내는 사람(발신지 IP), 받는 사람(목적지 IP), 패킷 번호(순서).
[2] 페이로드(Payload):
실제로 배달하려는 물건에 해당합니다.
- 네트워크에서 이는 전송하려는 실제 데이터입니다.
- 이메일 내용, 파일, 영상 스트림 등이 여기에 포함됩니다.
💡 예: 이메일 본문, 이미지 데이터, 파일 조각.
[3] 트레일러(Trailer):
검증 및 확인용 정보로, 배달물이 제대로 도착했는지 확인하는 용도로 쓰입니다.
- 데이터가 전송 중 손상되지 않았는지 확인하는 오류 검사 코드 등이 포함됩니다.
- 배달 과정에서 문제가 있으면 다시 발송을 요청하거나, 오류를 수정할 수 있습니다.
💡 예: 체크섬(오류 검출), 데이터의 종료 표시.
TCP(Transmission Control Protocol)
📌 서버와 클라이언트 간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜.
- IP방식에서는 패킷이 손실되거나 오류가 생겨도 데이터를 재전송 하지 않는 등의 문제가 있었습니다.
- 다만 TCP는 3Way HandSake를 통해 이를 해결하였습니다.
- IP의 문제점을 개선하기 위해 등장한 인터넷 프로토콜
- Ethernet frame 안에 IP안에 TCP 안에 HTTP(메시지)가 있다.
TCP 특징
전송 제어 프로토콜(Transmission Control Protocol)
• 연결지향 - TCP 3 way handshake (가상 연결) = 서버 연결 되었나 확인하고 데이터 전송
• 데이터 전달 보증
• 순서 보장
• 신뢰할 수 있는 프로토콜
• 현재는 대부분 TCP 사용
3-Way Handshake 순서 (네트워크 관점):
- 송신자 → 수신자: SYN 패킷
- 연결 요청.
- 수신자 → 송신자: SYN-ACK 패킷
- 요청 수락 및 연결 준비 상태 알림.
- 송신자 → 수신자: ACK 패킷
- 수락 확인 및 데이터 전송 준비 완료.
[1] SYN (문 열기 요청)
- **송신자(A)**가 **수신자(B)**에게 배달 준비가 되었는지 묻는 단계입니다.
- 배달원(A)이 **“문 열어도 되겠습니까?”**라고 묻는 상황과 비슷합니다.
- 네트워크에서는 송신자가 SYN 패킷( SYN 플래그가 설정된 패킷 )을 보냅니다.
💡 비유: 배달원이 "지금 물건을 전달할 준비가 되셨나요?"라고 묻는 메시지.
[2] SYN-ACK (문 열기 확인)
- **수신자(B)**는 SYN 요청을 확인하고, 동시에 자신의 준비 상태를 알립니다.
- 수신자가 배달원에게 **“네, 문 열렸습니다. 물건 주시면 됩니다!”**라고 대답하는 단계입니다.
- 네트워크에서는 수신자가 SYN-ACK 패킷을 보냅니다.
💡 비유: 수신자가 "알겠습니다. 저도 준비되었습니다!"라고 응답.
[3] ACK (확인 완료)
- **송신자(A)**는 수신자의 응답(SYN-ACK)을 확인하고 마지막으로 연결이 성립되었음을 알림니다.
- 배달원이 **“좋습니다, 물건을 전달하겠습니다!”**라고 마지막 확인을 보내는 단계입니다.
- 서버는 클라이언트의 SYN 요청을 수락하며, 자신도 연결을 시작하고 싶다는 뜻을 담아 SYN 플래그와 함께 ACK 플래그가 설정된 패킷을 클라이언트에게 전송합니다다.
- 여기서 데이터를 같이 전송 가능하다.
💡 비유: 배달원이 "좋아요, 이제 물건을 전달하겠습니다!"라고 다시 확인.
+ 하나 착각하면 안되는게, 위에는 단순히 보기 편하라고 클라,서버만 통신을 하는 것 처럼 보이게 하였지만, 실제로는 클라-서버-서버-서버- *** - 목표 서버 로 이동하게 된다. 나만을 위한 전용 랜선이 된건 아니라는
UDP(User Datagram Protocol)
📌 UDP는 비연결형, 신뢰성이 없는 전송 프로토콜이다. TCP의 신뢰성 보장 기능은 많은 애플리케이션에 유용했지만, 실시간 통신이나 스트리밍 애플리케이션에서는 빠른 전송이 중요했기 때문에 UDP는 이러한 요구를 충족하기 위해 개발되었다.
- 현대에서는 UDP를 많이 사용하는 추세이다. HTTP3 에서 채택한 방식, HTTP에도 버전이 있다!
- 특징 : 실시간성 보장 중요
[0] UDP 특징
사용자 데이터그램 프로토콜(User Datagram Protocol)
• 하얀 도화지에 비유(기능이 거의 없음)
• 연결지향 X - TCP 3 way handshake X
• 데이터 전달 보증 X
• 순서 보장 X
• 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
• 정리
• IP와 거의 같다. +PORT +체크섬 정도만 추가
• 애플리케이션에서 추가 작업 필요
[1] UDP의 특징
- IP 방식과 거의 비슷하다.
- 3 way handshake를 하지 않는다.
- 데이터 전송, 응답, 순서를 보장하지 않는다.(비신뢰성)
- 3 way handshake를 하지 않는다.
- 추가적인 기능이 거의 없다.
- 기능이 없고 연결을 하지 않는 대신 속도가 빠르다.
- IP와 차이점으로 PORT 가 존재한다
- TCP에도 PORT가 존재한다.
- 데이터 무결성 검사 → **체크섬(Checksum)**을 포함하고 있다 .
- 잘못된 데이터가 전송되지 않도록 만들어준다.
- 암호화라고 생각하면 편하다. 배달 물건에 박스 안에 담긴 물건의 무게가 5kg이라고 기록, 받는 사람이 제대로 왔는지 한번 더 확인하는 것
PORT
📌 포트(Port)는 네트워크에서 특정 프로그램이나 서비스와 연결을 식별하는 숫자로, 마치 한 주소에서 여러 방(포트 번호)을 통해 특정 사람이나 부서에 연결하듯, 포트를 사용하면 하나의 컴퓨터(IP 주소)에서 여러 서비스를 구분하고 접근할 수 있습니다.
- 현재 전송하고자 하는 패킷이 어떤 곳에 필요한 패킷인지 IP만으로는 해결이 되지 않습니다. 이때 프로그램을 구분하기 위해 사용되는 것이 바로 PORT입니다!
- 이미 국제 도메인 관리기구에 의해 사용되는 포트가 있는데 이게 0~1023포트이다. (0~65535 포트까지 존재)
- 이는 당연히 사용하지 않는게 좋다. 정부 소유 방에 들어가서 난장판을 칠건 아니니...
- 그냥 같은 IP 내에서 프로세스를 구분하는 식별 코드다.
실제 패킷 정보
[1] 포트의 배달 비유:
- IP 주소 = 건물 주소
- IP 주소는 배달을 보낼 목적지 건물에 해당합니다.
- 그러나 건물에는 여러 세대나 방이 있을 수 있으므로, 단순히 IP 주소만으로는 정확한 대상을 특정하기 어렵습니다.
- 포트 번호 = 방 번호
- 포트 번호는 특정 서비스를 나타내는 "방 번호"라고 볼 수 있습니다.
- 예를 들어, 이메일 서비스(SMTP)는 25번 포트, 웹 서버(HTTP)는 80번 포트를 사용합니다.
- 배달원은 **주소(IP)와 방 번호(포트 번호)**를 모두 알아야 물건을 정확히 전달할 수 있습니다.
- 패킷의 목적지 = 방 안 사람(서비스)
- 포트 번호를 통해 데이터가 정확히 어떤 프로그램으로 전달될지 결정됩니다.
- 예를 들어, IP 주소로 데이터를 보냈더라도 포트 번호가 없으면 잘못된 서비스로 전달될 가능성이 있습니다.
[2] 포트의 특징:
- 범위: 0~65535 (16비트 숫자)
- 0~1023: 잘 알려진 포트(예: HTTP 80, HTTPS 443, FTP 21).
- 1024~49151: 등록된 포트(특정 앱에서 사용).
- 49152~65535: 동적/임시 포트(일시적인 연결에 사용).
- 역할: 하나의 IP 주소에서 다수의 서비스를 구분.
'CS ( Computer Science ) > 네트워크 (Networking)' 카테고리의 다른 글
[Net] HTTP Header (0) | 2024.12.01 |
---|---|
[Net] HTTP Method (2) | 2024.11.30 |
[Net] HTTP (0) | 2024.11.29 |
[Net] JSON (1) | 2024.11.29 |
[Net] Web 기초 (1) | 2024.11.29 |