[CS:APP] 컴퓨터 시스템 11장 (~11.3 글로벌 IP 인터넷)

@developer/takealittle.time·2024년 10월 27일
0

Reading Book

목록 보기
5/5

요점만 간단히.


CHAPTER 11. 네트워크 프로그래밍

11.1 클라이언트 - 서버 프로그래밍 모델

  • 모든 네트워크 응용 프로그램의 기초.

  • (1개 이상의 클라이언트) ↔ (1개의 서버)

  • 1개의 host (컴퓨터)는서로 다른 다수의 client, server를 동시 실행 가능.

  • 서버: 일부 리소스 관리, 조작 → 클라이언트를 위한 일부 '서비스 제공'

  • 트랜잭션: 클라이언트-서버 모델의 근본적인 연산.

11.2 네트워크

  • 클라이언트, 서버가 종종 별도의 host에서 작동. (컴퓨터가 여러 대!) → 컴퓨터 네트워크의 H/W, S/W 자원 사용해 통신.

  • host에게 네트워크는 단지 또 다른 I/O device이다.

  • CPU에서 ~ 연산 처리하고 ~ → 다른 입출력 장치한테 데이터 보내듯, 'Network adaptor'로 보내면 그만!
    → 물리적으로 네트워크는 기하학적 위치로 구성된 계층구조 시스템.

  • LAN(Local Access Network): 네트워크 계층구조의 하위수준을 구성. 빌딩/캠퍼스에 설치하는 작은 네트워크

  • 가장 대중적인 LAN은 Ethernet

Ethernet Segment

  • Ethernet Segment는 위와 같이 여러 대의 Host와 Hub를 통해 구성.

    HUB

    • Hub는 각 Port에서 수신한모든 bit를 종속적으로 다른 모든 Port로 복사한다.
    • host는 'frame'이라 부르는 비트들을 segmen의 다른 host에게 보낼 수 있다.
    • 각 frame은 header(source, dest, 프레임의 길이 - bit) + (data-bit)로 구성된다.

Bridged Ethernet Segments.

  • 다수의 Ethernet Segment는 'Bridge'라고 하는 작은 상자들을 사용해 연결되어 브릿지형 이더넷(Bridged Ethernet)이라고 하는 더 큰 LAN을 구성 가능.

    Bridge

    • 브릿지 대역폭 > 허브 대역폭
    • 장기간에 걸쳐 host → port로의 도달 관계 학습.
      이후, 필요한 경우 '선택적으로' port 간 프레임 복사 수행.

<계층 구조 상부>

  • 여러 비호환성 LAN → '라우터'라고 하는 특별한 컴퓨터를 통해 연결.
    라우터는 point-to-point 전화 연결 가능 → WAN(Wide Aread Network)라는 더 넓은 범위의 네트워크 연결 가능.

  • 라우터(Router)는 임의의 LAN, WAN들로부터 "internet"을 구성.

* "Internet"의 중요 아이디어:

매우 다르고 비호환적인 기술을 갖는 여러 LAN, WAN들로 구성된 이 인터넷에서 각 Network의 차이를 어떻게 줄일 것인가?

답은 → "프로토콜"

<프로토콜 (Protocol)의 기본 기능>

1. 명명법 (Naming Schedule): host 주소를 위한 통일된 포맷 정의
2. 전달기법 (Delivery Mechanism): '패킷'으로 데이터 비트를 묶는 방법 제공
패킷(Packet): 헤더(패킷 크기, 소스, 목적지 호스트 주소) + 데이터(데이터 비트)

<internet에서 Host A 에서 Host B로 데이터가 이동하는 방법>

  • 주요 아이디어는 '캡슐화'

11.3 글로벌 IP 인터넷.

  • internet을 가장 성공적으로 구현한, 가장 유명한 것.

  • 각 internet host는 TCP/IP로 구현한 S/W를 실행.

  • (internet 클라이언트) ←(소켓 인터페이스, Unix I/O 함수)→ (intertnet 서버)

  1. IP: 기본명명법 (IP주소) + 전달 기법 (데이터그램: 한 인터넷 host → (패킷 배달)→ 다른 인터넷 host) 제공.

    • 중간에 배달중인 데이터를 잃어버리거나, 네트워크 내에서 중복되는 경우 책임 안 짐. (불안정)
  2. UDP: IP를 확장.
    프로세스 →(DataGram)→ 프로세스

  3. TCP: 'IP' 위에 구현한 복잡한 Protocol → 프로세스들 간 완전한 '양방향' 연결 제공.
    데이터 전송 중 이슈 발생 시 책임 짐. (안정)

<프로그래머 관점에서의 '인터넷(internet)'>

  • 다음과 같은 특징을 갖는 전 세계적인 host들의 집합.
  • 호스트의 집합 → 32-bit IP주소 집합에 매핑.
  • IP주소의 집합 → Internet Domain Name이라는 식별자 집합에 매핑.
  • 한 인터넷 host의 process → 연결 통해 다른 인터넷 host 프로세스와 통신 가능.

11.3.1. IP주소

  • 비부호형 32-bit 정수.

  • 각 컴퓨터 마다 빅 엔디안, 리틀 엔디안 차이 → Unix는 htonl, ntohl, htons, ntohs와 같은 함수들 제공

  • dotted-decimal 표기법: 각 바이트가 십진수. 다른 바이트와 점 찍어서 표현.
    ex) 127.0.0.1

11.3.2 인터넷 도메인 이름 Domain Name Service.

  • <인터넷 Client> ←(IP주소로 통신)→ <인터넷 Server>
    but. 사람들이 일일이 IP주소로 기억 어려움 → "도메인 네임 서비스 (DNS: Domain Name Service)" 등장

  • 인터넷 → <도메인 이름 집합> ←(매핑)→ <IP주소 집합>

  • DNS는 트리로 그려지는 계층 구조.

  • DNS는 수백만 호스트 엔트리(각각은 '도메인 이름↔IP주소 집합' 사이의 매핑을 정의)로 구성.

11.3.3 인터넷 연결

  • <'Client'> ←(바이트 스트림) → <'Server'>

  • point-to-point(점대점 연결), full-duplex(완전 양방향)

소켓(Socket)

  • 연결의 종단점(=끝 점)
  • 소켓 주소: 인터넷 주소 + 16-bit 정수 port. (address:port)

  • 클라이언트의 소켓 주소 내 포트: 단기 포트(ephermeral port). 클라이언트가 연결 요청 시 자동 할당.
  • 서버의 소켓 주소 내 포트: 영구적. 해당 서비스에 연결되는 well-known 포트. ex) 이메일 서버: 25

  • 소켓 쌍: (cliaddr:cliport, servaddr:servport)


11.4의 소켓 인터페이스 부분 부터는 리눅스 환경에서 C를 이용한 server와 client 구현과 함께 작성할 예정입니다.


*참고 자료 / 이미지 출처

CS:APP 컴퓨터 시스템.

profile
능동적으로 사고하고, 성장하기 위한. 🌱

0개의 댓글

관련 채용 정보