CS/네트워크

[네트워크] KOCW 이석복 교수님 강의 - 2. 컴퓨터네트워크 기본2

pythaac 2022. 3. 28. 08:02

  • 패킷 스위칭을 고속도로에 비유
    • 패킷 스위칭은 링크에서 빛의 속도로 도달
    • 패킷 스위칭은 패킷의 모든 데이터가 라우터에 도착해야 다음 라우터로 진행 (패킷 단위로)

  • 네트워크 애플리케이션
    • 네트워크 edge 서버/클라이언트에서 동작하는 애플리케이션
  • 서버
    • 웹서버
    • 서버는 24시간 동작해야함
    • 인터넷 상에 존재하는 컴퓨터는 IP라는 고정된 주소를 가지고 있어야함 (요청을 받아야 하기 때문)
  • 클라이언트
    • 웹브라우저
    • 클라이언트는 고정되지 않은 IP를 가져도 상관없음
  • 소켓
    • 프로세스끼리 통신(IPC)를 위해 OS가 system call을 통해 인터페이스를 만들어놓음
    • 네트워크도 똑같음 : 두 프로세스가 다른 컴퓨터에 있을 뿐 OS가 인터페이스를 제공
    • 이 인터페이스를 소켓이라고 함
    • 소켓을 식별하기 위해 IP와 port를 사용
    • IP는 인터넷 상의 컴퓨터 식별, port는 그 컴퓨터에서 프로세스(소켓)를 식별
  • DNS
    • IP/port를 외우기 싫어서 알파벳으로 사용하자
    • IP 주소만 해석해줌
  • port 80
    • 구글, 네이버, 아마존 모두 80번 포트를 사용
    • 왜?
      • 서버는 항상 고정된 주소를 가져야함
      • DNS는 IP만 해석해줌
      • port가 다 다르면 헷갈리고 외우기 귀찮음

  • OSI 7계층의 개념
    • 하위 계층은 상위 계층에게 서비스를 제공
    • 애플리케이션 레이어는 전송 계층에서 제공하는 기능을 사용
    • transport layer에서 이런 서비스를 제공해줬으면 좋겠다
      • 1. data integrity
        - 데이터가 유실되지 않고 도착했으면 좋겠다
      • 2. timing
        - 데이터가 10ms 안에 도착했으면 좋겠다
      • 3. throughput
        - 데이터가 1 Gbps 용량이 나왔으면 좋겠다
      • 4. security
        - 보안
      • TCP가 제공하는 기능은 1. data integrity만 제공해줌
    • 2. timing vs 3. throughput
      • 똑같은 이야기 아닌가?
      • timing은 언제까지 도착 (데이터가 하나도 출발하지 않다가 갑자기 전부 도착해도 됨)
      • throughput은 양에 대한 이야기

  • HTTP (HyperText Transport Protocol)
    • HyperText를 전달하는 프로토콜
    • Hyper Text
      - 텍스트인데 중간중간 다른 텍스트로 이어지는 링크가 있는 텍스트
    • request
      - 내가 받고자하는 hypertext 파일 주세요
    • response
      - hypertext 파일
    • 그런데 HTTP는 TCP를 사용
      - request/response 이전에 TCP connection이 필요
    • Stateless
      - request를 받으면 response를 주고 끝
      - 상태를 저장하지 않음

  • persistent vs non-persistent HTTP
    • non-persistent
      - 한 번 데이터(object)를 전송하고 connection 종료 (유지하지 않음)
    • persistent
      - 한 번의 TCP 연결로 여러 데이터를 주고 받음

  • non-persistent 예시
    • 어떤 URL을 요청했을 때, 가져오는 데이터가 10개의 그림을 포함한 텍스트
    • [1~3] TCP 연결 후 해당 텍스트를 response로 수신
    • [4] response가 끝나면 TCP 연결 종료
    • [5] 클라이언트는 텍스트를 파싱하고 10개의 reference가 더 필요한 것을 확인
    • [1~3] 다시 TCP를 연결하여 그림 1을 response로 수신
    • [4] TCP 연결 종료
    • 다시 연결 -> 종료를 반복
  • persistent
    • persistent면 연결을 유지하여 그림을 모두 수신
    • 현재 브라우저는 persistent HTTP 사용