✅ 1. 인터넷 통신

  • 클라이언트에서 특정 요청을 하면 서버에서 요청을 확인하고 다시 클라이언트에서 보내주는 방식.
  • 클라이언트와 서버를 연결해주는 무수한 연결망을 인터넷이라고 함.

✅ 2. IP(Internet Protocol)

IP 역할

  • 클라이언트 IP와 서버 IP를 명시해서 정확한 위치에 원하는 요청을 함
  • 지정한 IP(IP Address)에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 데이터 전달 —> 패킷은 약간 편지 같은거? 보내는사람, 받는 사람 적어서 보내는 것처럼 데이터를 전달 할 때 규칙이 존재

서버 패킷 전달

  • 인터넷을 통해 서버(주소)에게 데이터를 전달하는데, 다시 서버에서 클라이언트에게 전달 될 때에는 같은 경로로 오지 않을 수 있음.

IP 프로토콜의 한계 —> TCP, UDP로 해결 가능

  • 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
  • 비신뢰성: 중간에 패킷이 사라지면? 패킷이 순서대로 안오면?
  • 프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 App이 둘 2상이면?

✅ 3. TCP, UDP

TCP(Transmission Control Protocol) 특징

  • 연결 지향 TCP 3 Way HandShake(가상 연결): 실제로 연결되지 않고, 명목상으로 서버랑 연결했다고 이야기하는 것. 사실 그 과정에 많은 서버(노드)가 존재함
  • 데이터 전달 보증
  • 순서 보장
  • 신뢰 할 수 있는 프로토콜
  • 현재는 대부분 TCP 사용

UDP(User Datagram Protocol)

  • 하얀 도화지에 비유(기능이 거의 없음)
  • 연결 지향 X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
  • IP와 거의 같음 + PORT + 체크섬 정도만 추가
  • 애플리케이션에서 추가 작업 필요

✅ 4. PORT

Q) 한번에 2개이상 서버와 연결해야 하면???

  • IP 패킷 안에 목적지 IP(서버)외에 해당 서버 안에 PORT를 지정하는 방법으로 해결 가능(이 때, TCP 세그먼트에 출발지 & 목적지 PORT를 기입할 수 있음)

내용

  1. IP는 아파트, PORT는 동, 호수라고 생각하면 됨
  2. IP에 추가로 각각의 PORT 존재

    • ex) 클라이언트 IP: 100.100.100.1 PORT 8080 —> 서버 IP: 200.200.200.2 PORT 1120 이런식으로 보냄
  3. PORT 번호

    • 0 ~ 65535 할당가능
    • 0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음
    • FTP : 20, 21
    • TELNET : 23
    • HTTP : 80
    • HTTPS : 443

✅ 5. DNS

IP 문제점

  • IP가 변경되거나, 숫자로 되어있어 구분이 용이 하지 않음.

해결

  • 도메인 네임 시스템(Domain Name System) ex) 전화번호부, 도메인 명을 IP주소로 변환
  • 도메인 명(google.com)을 요청하면 DNS에서 알아서 도메인명과 부합하는 IP를 응답으로 주고 이 응답 IP를 통해 서버에게 데이터를 요청