네트워크 프로그래밍을 위한 밑거름

민픽minpic·2023년 5월 19일
0

[TIL] Today I Learned

목록 보기
16/25

네트워킹 프로그래밍을 하기 위하여 필요한 내용을 정리하고자 한다.
기본적으로 컴퓨터 시스템 책을 기반으로 정리할 예정이다.
네트워크를 위한 책이 아니기 때문에 세부적인 네트워크에 대한 개념보다는 컴퓨터 시스템에서 네트워크가 필요한 부분들이 정리되어있다.

Client-Server Transaction

대부분 네트워크 응용 프로그램들은 클라이언트와 서버 모델을 기반으로 한다.
이 모델은 한개의 서버 프로세스와 한 개이상의 클라이언트 프로세스로 구성된다.

위에 그림은 근본적인 트랜잭션에 대한 그림이다.

  1. 클라이언트가 서비스를 필요로 할 때 클라이언트는 한개의 요청을 서버에 보내는 것을 트랜잭션을 개시한다.
  2. 서버는 요청을 받고 해석하고 자신의 자원들을 적절한 방법으로 조작한다.
  3. 서버는 응답을 클라이언트로 보내고 그 후 다음 요청을 기다린다.
  4. 클라이언트는 응답을 받고 이것을 처리한다.

여기서 기억할 점은, 클라이언트와 서버라고 칭해서 약간 호스트 처럼 오해할 수도 있는데,
여기서 클라이언트와 서버는 프로세스라는 점을 기억해야 한다.

더불어 network adapter 위치를 보면 I/O 버스로 데이터를 움직이는데, 즉 호스트에게 네트워크는 단지 또 다른 I/O 디바이스이다.
네트워크에서 수신한 데이터는 I/O와 메모리 버스를 거쳐 어댑터 메모리로, 대개 *DMA(Direct memory access) 전송으로 복사된다.

*DMA : DMA(Direct Memory Access)는 CPU의 개입 없이 I/O 장치와 메인 메모리 간에 데이터를 직접 이동할 수 있게 하는 하드웨어 기능이다.
이를 통해 CPU는 I/O 작업을 기다리는 동안 다른 작업을 계속 수행할 수 있으므로 시스템 성능이 향상된다. 따라서, 네트워크로부터 받은 데이터를 CPU의 개입 없이 직접 메인 메모리로 이동시키는데 DMA가 사용된다.

네트워크 계층 구조

컴퓨터 시스템 책을 보게되면 각 계층별 사용하고 있는 프로토콜들을 설명없이 그냥 써내려가는 부분들이 있다. 그래서 이해를 위해 한번 네트워크 계층 구조에 대해서 간단하게 집고 넘어가려 한다.

OSI 7 계층

기본적으로 네트워크는 계층이 존재한다. OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말한다.
그리고 각 계층마다 특징적인 *프로토콜 들이 존재한다.

*프로토콜 : 프로토콜(protocol)은 컴퓨터, 네트워크 장치, 소프트웨어 등이 통신을 수행하기 위해 따라야 하는 규칙이나 표준

계층별 대표적인 프로토콜

  1. 물리 계층(Physical Layer): *Ethernet, USB, Bluetooth 등
  2. 데이터 링크 계층(Data Link Layer): Ethernet, Wi-Fi, PPP 등
  3. 네트워크 계층(Network Layer): IP (IPv4, IPv6), ICMP, ARP 등
  4. 전송 계층(Transport Layer): TCP, UDP, SCTP 등
  5. 세션 계층(Session Layer): NetBIOS, PPTP 등
  6. 표현 계층(Presentation Layer): SSL, TLS, JPEG, ASCII 등
  7. 응용 계층(Application Layer): HTTP, FTP, DNS, SMTP, POP3 등

*Ethernet : 프레임 기반의 네트워크 프로토콜로, 각 프레임은 목적지와 출발지의 MAC 주소를 포함함. 이더넷(Ethernet)의 가장 큰 특징은 CSMA/CD라는 프로토콜을 사용해서 통신한다는 것이다.

LAN(Local Area Network)

하나의 빌딩이나 대학 캠퍼스 정도 범위 내에 있는 PC, 서버, 프린터 등이 상호 연결되어 구성된 네트워크 시스템이다.
거리 제한을 둠으로써 비교적 높은 데이터 전송률 제공이 가능해진다.

여기서 위에서 잠깐 나온 Ethernet도 LAN에서 가장 널리 사용되는 기술이다.

SDU와 PDU

SDU는 Service Data Unit 이고, PDU는 Protocol Data Unit 이다.
PDU는 프로토콜에서 사용하는 데이터 단위
SDU는 실제로 서비스되는 데이터 유닛이다.

위에 데이터를 처리하는 과정을 살펴보면, 응용계층에서 표현계층으로 데이터를 보낸다.
그러면 표현계층에서 받은 데이터에 *PCI를 붙여 PDU만든 뒤 세션계층으로 보낸다. 그러면 세션계층은 표현계층에서 온 PDU에 또 PCI를 붙여 PDU를 또 만든다. 이렇게 물리계층까지 데이터가 전달된다.

*PCI : 흐름 제어 정보, 오류 제어 정보, 주소 정보(발신지, 수신지) 등이 포함됨.

TCP/IP 네트워크 모델

TCP/IP 모델은 OSI 모델과 다르게 5계층으로 합쳐있다.

TCP는 위쪽에 계층별 프로토콜 정리된 곳에 나와있듯이 Transport Layer (전송계층) 프로토콜이다.
IP는 Network layer(네트워크 계층) 이다.

이 책에서는 해당 TCP/IP의 내부 동작에 대해서는 논하지 않고, TCP/IP가 응용프로그램에 제공하는 기본 기능의 일부에 대해서만 논할 것이다.

profile
사진찍는 개발자 / 한 가지 개념이라도 깊이있게

0개의 댓글