[CSAPP] Chapter 11.

Y_Y·2023년 5월 22일
0

CSAPP

목록 보기
3/4

네트워크 프로그래밍

모든 네트워크 어플리케이션은 동일한 프로그래밍 모델을 기초로 하고, 비슷한 논리 구조로 동일한 인터페이스를 사용한다.

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

모든 네트워크 어플리케이션은 클라이언트-서버 모델을 기초로 하고 있으며, 한 개의 서버 프로세스와 한 개 이상의 클라이언트 프로세스로 구성된다.

  • 서버는 일부 리소스를 관리하고, 리소스를 조작하여 클라이언트를 위한 서비스를 제공한다.
  • FTP(File Transfer Protocol) 서버는 클라이언트를 위해 저정하고 읽어오는 디스크 파일들을 관리한다.

    ex) Filezilla - 서버에 연결하여 서버에 존재하는 파일에 접근하여 관리한다.

  • 클라이언트-서버 모델에서 근본적인 연산은 트랜잭션이다.
  1. 클라이언트가 서버에 요청을 보낸다 (트랜잭션 개시).
  2. 서버는 요청을 받고 자원들을 조작한다.

    ex) 웹 서버가 브라우저로부터 요청을 받을 때, 디스크 파일을 읽는다.

  3. 서버는 response를 클라리언트를 보내고, 다음 요청을 기다린다.

    ex) 웹 서버는 이 파일을 다시 클라이언트로 보낸다.

  4. 클라이언트는 응답을 받고 이것을 처리한다.

    ex) 웹 브라우저가 서버로부터 페이지 한 개를 받은 후 스크린에 출력한다.

클라이언트-서버는 프로세스이며, 호스트가 아니다.

11.2 네트워크

추가정보 internet 과 Internet의 차이 : internet은 일반적인 internet 개념을 나타내고, Internet은 특정 구현, 즉 IP Internet을 의미한다.

네트워크 호스트의 하드웨어 구성

  • 호스트(컴퓨터라고 해석하면 편하다)에게 네트워크는 단지 또 다른 I/O 디바이스이며, 그림처럼 데이터를 위한 소스와 싱크로 서비스한다.
  • 네트워크에서 수신한 데이터는 I/O와 메모리 버스를 거쳐서 어댑터에서 메모리로, 대개 DMA 전송으로 복사된다.
  • 물리적으로 네트워크는 기하학적 위치로 구성된 계층구조 시스템이다.
  • 하위수준은 LAN(Local Area Network)로 빌딩이나 캠퍼스에 설치된다. 장 대중적인 LAN 기술은 이더넷(Ethernet) 이며 Xerox PARC에서 개발되었다.
  • 이더넷 세그먼트호스트와 허브로 구성된다, 대개 방이나 빌딩 층과 같이 작은 지역에 설치한다.

    ex) 군 부대 또는 집 출입문 또는 층마다 설치되어 있는 단자함st

  • 이더넷 어댑터는 호스트의 어댑터, 허브의 포트에 연결된다
  • 이더넷 어댑터는 어댑터의 비휘발성 메모리에 저장된 전체적으로 고유한 48비트 주소를 가진다.
  • 호스트는 프레임 (Frame)이라고 부르는 비트들을 이더넷 세그먼트의 다른 호스트에 보낼 수 있다.
  • 프레임은 출발지와 목적지, 프레임의 길이를 식별할 수 있는 고정된 헤더 비트를 가지며, 그 뒤에 데이터(payload) 비트가 이어진다.
  • 모든 호스트는 이 프레임을 볼 수 있지만 목적지 호스트만이 읽을 수 있다.

이더넷 어댑터는 이더넷 네트워크를 이용하기위한 하드웨어 장치, MAC Address는 이더넷 네트워크에서 장치를 식별하기 위한 고유 주소.

  • 브릿지형 이더넷으로 전체 빌딩이나 캠퍼스 규모로 설치 할 수 있다.
  • 브릿지가 허브보다 더 큰 전선의 대역폭을 갖고 있다.
  • 계층구조의 상부에 LAN들을 연결해주는 라우터(router)가 존재한다.
  • 라우터는 Point-to-Point 연결이 가능하며 WAN(Wide Area Network)라고 한다.

Q. internet의 주요한 특성은 LAN과 WAN들로 이뤄져 있다는 것인데, 그렇다면 각 호스트는 물리적으로 연결되어져 있지 않는 비호환적인 네트워크를 지나 어떻게 목적지 호스트에 데이터를 전송할 수 있을까?

A. 해답은 네트워크 간의 차이를 줄여 주는 호스트와 라우터에서 돌고 있는 프로토콜 소프트웨어의 계층이다. 이 소프트웨어는 어떻게 호스트들과 라우터들이 데이터를 전송하기 위해서 협력하는지를 결정하는 프로토콜을 구현한 것이다.

  1. 명명법 (Naming scheme) : 서로 다른 LAN 기술은 주소를 호스트에 할당하는 서로 다른 비호환성을 갖는 방법을 사용한다. 호스트는 자신을 유일하게 식별하는 internet 주소 최소한 한 개가 할당된다. (IP address)
  2. 전달기법 (Delivery Mechanism) : 서로 다른 네트워킹 기술은 서로 다른 비호환성을 갖는 비트 인코딩 방법과 프레임 내에 이들을 패키징 하는 방법을 갖고 있다. IP는 데이터 비트 패킷을 통해 패키징한다.
    패킷패킷 헤더와 출발지 호스트가 보내려는 데이터 비트를 포함하는 데이터로 구성된다.

다시 보는 단어장

Frame : 출발지와 목적지, 프레임 길이를 식별할 수 있는 헤더와 데이터를 갖고있다.

  1. 호스트 A의 클라이언트는 클라이언트의 가상 주소공간에서 커널 버퍼로 데이터를 복사하는 시스템 콜을 호출한다.
  2. internet H + FH1 = LAN1 Frame internet 헤더에는 목적지 주소의 헤더로 지정된다. FH1은 라우터로 주소가 지정된다. 호스트 A는 프레임을 어댑터로 전달하고 FH1의 데이터가 internet 패킷이며, 이렇게 패키징하는 것을 캡슐화라고 한다.
  3. LAN1 어댑터는 프레임을 네트워크로 복사한다.
  4. 프레임이 라우터에 도달하면, 라우터의 LAN1 어댑터는 프로토콜 소프트웨어로 전달한다.
  5. 이 단계에서는 라우터가 internet 패킷 헤더에서 목적지 internet 주소를 가져와 라우팅 테이블의 인덱스로 사용하여 패킷을 전달할 위치를 결정합니다. 이 과정에서 라우터는 FH1을 벗겨내고 FH2를 붙여 어댑터로 전달한다.
  6. 라우터의 LAN2 어댑터는 이 프레임을 네트워크로 복사한다.
  7. 프레임이 호스트 B에 도착하면 어댑터는 이것을 프로토콜 소프트웨어로 넘긴다.
  8. 마지막으로 호스트 B의 프로토콜 소프트웨어는 패킷 헤더와 프레임 헤더를 벗겨내고, 프로토콜 소프트웨어는 이 데이터를 서버가 시스템 콜로 호출할 때 서버의 가상 주소공간으로 복사한다.

대부분의 모든 header에는 데이터 크기, 출발지와 목적지 주소를 갖고 있다.

profile
남을 위해(나를 위해) 글을 쓰는 Velog

0개의 댓글