크래프톤정글5주차 - CSAPP 11장

김태성·2024년 2월 20일
0
post-thumbnail

CSAPP 10~12장의 내용은 프로그램 간의 상호작용에 대한 내용이다.
11장은 그 중에서도 네트워크 통신에 관한 내용이 나오며, 어떻게 우리 컴퓨터가 인터넷과 연결을 하고, 데이터를 받아오는가에 대해 이해할 수 있다.

적힌 개념의 내용은 적지만, 그 내용들을 응용하고 코드로 설명하는데 많은 분량을 가지고 있으며, 이번 글에는 내용 정리가 목적이기 때문에 다 쓰진 않을 것이다.

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


모든 네트워크 응용 프로그램은 클라이언트 - 서버 모델에 기반을 가지고 있다.
프로그램은 하나의 서버와 여러개의 클라이언트 프로세스로 구성된다.

클라이언트-서버 모델의 기본적인 동작방식은 트랜잭션이다.
트랜잭션은 데이터베이스 관리 시스템에서의 상호작용 단위 이다.
트랜잭션은 4단계로 구성된다.

  • 클라이언트가 서비스를 서버에 요청함으로써 트랜잭션을 시작한다.

  • 서버는 요청을 받아 해석한 후 자원들을 조작한다.

  • 서버가 응답(response)를 클라이언트에 보내고 다음 요청을 기다린다.

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

클라이언트와 서버는 프로세스이다.

11-2 네트워크

클라이언트와 서버는 프로세스이기 때문에 다른 호스트에서도 돌아간다.
호스트에게 네트워크는 I/O 디바이스일 뿐이다.

네트워크는 기하학적인 위치로 구성된 계층구조 시스템이다.
하위수준은 LAN(local area network)으로, 빌딩이나 캠퍼스에 설치된다. 가장 대중적인 LAN은 현재까지 이더넷이라고 한다.

이더넷 세그먼트(ethernet segment)는 위 그림과 같은 구조를 가진다.
그리고 다음은 이더넷에 대한 설명이다.

  • 이더넷 어댑터는 고유한 48비트의 주소를 가진다.

  • 호스트는 프레임이라고 부르는 비트들을 각 세그먼트의 다른 호스트에게 보낼 수 있다.
    프레임은 소스,목적지,헤더 비트, 그 뒤에 데이터 비트를 가지고 있다.
    모든 호스트는 이것을 볼 수 있지만, 목적지 호스트만이 이것을 읽어들인다.

  • 위와 같은 이더넷 세그먼트는 방이나 빌딩의 층 등 작은 지역에 설치된다.


위 그림처럼 브리짓을 통해 여러 이더넷 세그먼트가 연결 된 것을 브릿지형 이더넷이라고 한다.
브릿지 이더넷은 빌딩이나 캠퍼스 규모로 설치 될 수 있다.


그리고 위의 그림을 아주 단순화 시키면 이러한 그림으로도 나타낼 수 있다.





이러한 LAN들을 연결하기 위해 라우터가 필요하다.
라우터는 ppp 통신을 사용할 수 있고, 이정도 규모부터는 WAN(wide-area network)라고 불린다.

인터넷은 여러 LAN과 WAN으로 이루어져 있다는 것을 알게 되었는데, 어떻게 하나의 host가 다른 host로 비트를 전송할 수 있는가?

그건 프로토콜 소프트웨어의 계층에 있다.
이 소프트웨어는 두가지 기능을 제공한다.

  • 명명법 : 서로다른 LAN 기술은 호환성이 좋지 않다. 그래서 internet 프로토콜은 통일된 포맷을 정의해서 차이점들을 줄여나간다.

  • 전달기법 : 서로다른 네트워킹 기술들은 호환성이 좋지 않은데, internet 프로토콜은 패킷이라고 불리는 단위로 묶는 방법을 정의해 차이점들을 줄인다.

11-3 글로벌 IP 인터넷

각 호스트들은 TCP/IP 프로토콜을 구현한 소프트웨어를 실행한다.

TCP/IP란 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약(프로토콜)의 모음이다.
그 중 Transmission Control Protocol , Internet Protocol가 가장 많이 쓰이기 때문에 TCP/IP라고 부른다.

프로그래머의 관점에서, 인터넷을 다음과 같은 특징을 갖는 전 세계적인 호스트의 집합이라고 생각할 수 있다.

  • 호스트의 집합은 32비트 IP주소 집합에 매핑된다.

  • IP 주소의 집합은 internet domain name이라고 부르는 식별자의 집합에 매핑된다.

  • 하나의 인터넷 호스트의 프로세스는 연결을 통해서 다른 인터넷 호스트의 프로세스와 통신할 수 있다.

인터넷 연결

인터넷 클라이언트와 서버는 point to point 연결을 하는데, 이때 연결의 종단점을 소켓이라고 한다.
각 소켓은 인터넷 주소와 16비트 정수 포트로 이루어진 소켓 주소를 가지며 이것은 address : port로 나타낸다.

위의 그림에서, 클라이언트의 소켓 주소는 128.2.194.252:51213이고
웹 서버의 소켓 주소는 208.216.181.15:80이다.

그리고 소켓주소는 특정한 숫자가 특정한 상황에서 쓰이기도 하는데,
웹 서버는 포트 80을 쓰고 , 이메일 서버는 포트 25를 사용한다.

이후의 내용은 소켓 함수와 웹 서버 구축에 대한 내용이 나온다.
6주차 프로잭트 회고때 정리하도록 하겠다.



































profile
닭이 되고싶은 병아리

0개의 댓글

관련 채용 정보