네트워크

star_pooh·2024년 12월 2일
0

TIL

목록 보기
26/39
post-thumbnail

네트워크

인터넷

인터넷 프로토콜 스위트(TCP/IP)를 기반으로 하여 전 세계적으로 연결되어있는 컴퓨터 네트워크 통신망을 일컬음

  • 해저 광케이블
  • 인공위성

인터넷 프로토콜 IP (Internet Protocol)

인터넷이 통하는 네트워크에서 정보를 송수신하는 통신에 대한 규약을 의미

  • IP 주소
    • 각 기기 간의 통신을 식별할 수 있는 고유 주소 (ex. 111.123.121.22)
    • 통신 시, 지정한 IP 주소에 패킷(Packet)이라는 단위로 데이터를 전달
  • 패킷(Packet)
    • 소스 IP(출발지), 대상 IP(도착지)를 포함하고 있어서 어떤 컴퓨터에 데이터를 전송할지 판별할 수 있음
    • 크게 헤더, 페이로드, 트레일러(수신여부 포함)으로 구분
    • 데이터를 주기만 하는 것이 아닌 받고 응답까지 함
  • IP 방식의 문제점
    • 애플리케이션 구분
      • 대상 컴퓨터의 어떤 프로그램에 사용될 데이터인지 구분할 수 없음
    • 비연결성
      • 대상의 현재 상태에 상관없이 데이터를 전송
    • 비신뢰성
      • 패킷이 소실되는 경우 발생 (손상 여부를 송신/수신측 모두 알 수 없음)
      • 패킷의 순서가 뒤죽박죽인 경우 발생 (용량이 큰 데이터의 경우 패킷이 여러 개로 나뉘어져 전송)
      • 패킷이 손실되거나 오류가 발생하여도 데이터의 재전송을 진행하지 않음

TCP (Transmission Control Protocol)

서버와 클라이언트 간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜

  • 3 Way HandShake
      1. 접속 요청 (SYN)
      1. 요청 수락 (ACK) 및 접속 요청 (SYN) -> ACK가 없다면 연결 실패로 간주
      1. 요청 수락 (ACK) -> ACK와 함께 데이터 전송 가능
    • 데이터 전송 여부에 대한 확인이 가능하고 패킷 순서를 보장할 수 있음
    • 연결 과정 및 데이터 전송에 시간이 많이 소요되어 느림

💡 SYN (Synchronize)

  • 클라이언트가 서버에게 연결을 요청하는 첫 번째 단계
  • 연결을 시작하고 싶다는 의사를 나타내기 위해 SYN 플래그가 설정된 패킷을 전송
  • 패킷에는 시퀀스 번호도 포함되어 있고 및 데이터 전송 순서를 관리할 준비도 함

💡 ACK (Acknowledge)

  • 서버가 클라이언트의 SYN 패킷을 받고, 확인했다는 신호를 보내는 단계
  • 클라이언트의 SYN 요청을 수락하며, 자신도 연결을 시작하고 싶다는 뜻으로 SYN 플래그와 ACK 플래그가 설정된 패킷을 클라이언트에게 전송
  • 이 때, 서버는 클라이언트의 시퀀스 번호에 1을 더한 값을 ACK로 응답

UDP (User Datagram Protocol)

비연결형, 신뢰성이 없는 전송 프로토콜로서 실시간 통신이나 스트리밍 애플리케이션 등 빠른 전송이 중요한 요구를 충족하기 위해 개발

  • IP 방식과 거의 비슷하고 3 Way HandShake를 하지 않음
    • 데이터 전송, 응답, 순서를 보장하지 않음 (비신뢰성)
  • 추가적인 기능이 거의 없어 속도가 빠름
  • IP와의 차이점으로 포트(PORT)가 존재함
  • 데이터 무결성 검사인 체크섬(Checksum)을 포함
    • 잘못된 데이터가 전송되지 않도록 함

포트 (PORT)

같은 IP 내에서 프로세스를 구분하기 위해 사용

  • TCP/IP 패킷 구조
    • 소스 IP, 소스 PORT, 대상 IP, 대상 PORT, 데이터, ...
  • 자주 사용되는 포트
    • 0 ~ 65535 할당 가능
    • 0 ~ 1023은 이미 사용되고 있는 포트이기 때문에 사용하지 않는 것이 좋음
      • FTP : 20, 21 (TCP)
      • SSH : 22 (TCP)
        • TELNET : 23 (TCP)
        • SMTP : 25 (TCP)
        • DNS : 53 (TCP / UDP)
        • DHCP : 67 (UDP)
        • HTTP : 80 (TCP)
        • HTTPS : 443 (TCP)
        • RDP : 3389 (TCP / UDP)

Web 기초

DNS (Domain Name System)

도메인 이름과 IP 주소를 서로 변환하는 역할을 수행 (즉, 사람이 읽을 수 있는 도메인 이름을 컴퓨터가 읽을 수 있는 IP 주소로 변환)

  • DNS가 나오게 된 이유
    • 컴퓨터 간의 통신을 위해선 IP 주소가 필요하지만, 사이트마다 특징도 없고 길어서 외우기 힘듦
    • IP는 변경되는 주소이고, 만약 변경된 IP 주소를 전달 받지 못하면 새로운 IP 주소에 접근할 수 없음
  • DNS 동작 순서
      1. 원하는 이름의 도메인을 구매 후, DNS 서버에 등록
      1. 도메인명을 입력하면 DNS 서버는 IP 주소를 반환
      • IP가 변경될 경우, DNS 서버에 등록된 IP 주소만 변경하면 됨
      1. IP 주소의 형태가 아닌 도메인명의 형태(www.naver.com)로 웹에 접속

URI (Uniform Resource Identifier)

인터넷 자원(Resource)을 나타내는 고유 식별자(Identifier)

  • URI(Uniform Resource Identifier)
    • 인터넷 자원을 식별할 수 있는 문자열
    • Uniform : 자원(Resource)을 식별하는 통일된 방식을 의미
    • Resource : 자원(페이지, 텍스트, 이미지, 동영상, 파일 등)을 의미
    • Identifier : 식별자를 의미
    • 하위 개념으로 URL, URN이 존재
  • URL(Uniform Resource Locator)
    • 자원의 위치를 의미
    • 일반적으로 도메인 주소로 알려져 있으며 프로토콜을 포함
      • 자원의 위치를 변경하면 기존 URL은 사용할 수 없기 때문에 URN이 등장하게 됨
  • URN(Uniform Resource Name)
    - 자원의 이름을 의미
    - 자원의 위치가 변경되어도 이름으로 찾기 때문에 사용 가능
    - 프로토콜을 포함하지 않음
    - URN으로 접근하는 방법은 대중화 되어 있지 않음
    💡 대부분 대중화된 URL을 사용하여, URI를 URL과 같은 의미로 사용

URL (Uniform Resource Locator)

프로토콜을 포함한 자원(Resource)의 위치를 나타냄

scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
https://www.google.com:443/search?q=오늘의+날씨
  • URL 구조
    • []
      • 생략 가능
    • scheme
      • 주로 프로토콜을 사용하며, 웹에서는 http, https, ftp를 주로 사용
    • user[:password]
      • 사용자 정보로서 URL은 보안에 취약하여 사용하지 않음
    • host[:port]
      • 도메인명 또는 IP 주소를 직접 사용
      • 포트는 일반적으로 생략
    • [/path]
      • 리소스의 경로
      • 계층 구조로 구성
    • [?query]
      • key=value 형태로 구성
      • Query Parameter, Query String 이라고 하며 같은 의미를 나타냄
      • ?로 시작되고 &로 구분
    • [#fragment]
      • html 내부 북마크 등에 사용
      • 전달받은 URL로 접속 시 특정 위치(fragment)로 이동 가능

브라우저에 URL을 입력하면 어떻게 될까

  1. https://www.google.com:443/search?q=오늘의+날씨 URL을 입력
  2. DNS 서버를 조회하여 www.google.com에 해당하는 IP 주소를 응답 받음
  3. 웹 브라우저에서 HTTP 요청 메시지를 생성
    • 오늘의 날씨를 검색해줘 라는 것과 동일
  4. 요청 패킷 (HTTP 메시지 포함)을 구글 서버로 전송
  5. 구글 서버에서 HTTP 요청 메시지를 기반으로 HTTP 응답 메시지를 패킷으로 클라이언트에게 전달
  6. 응답 패킷에 담긴 HTML 코드를 기반으로 응답 결과가 브라우저에 그려짐

✅ 출처
https://www.researchgate.net/figure/The-illustration-of-the-URL-URN-and-URI-26_fig4_346585530

0개의 댓글

관련 채용 정보