네트워크 기초

웹 프로그래밍을 하다보면 네트워크 지식을 알게 모르게 필요로 했던거 같다. 프레임워크를 사용하면서 내부적으로 어떻게 작동되는지 제대로 이해하지 못한채 사용하는 경우가 많았는데 이유를 생각해보니 HTTP에 대해서 아주 조금의 지식만 가지고 있었기 때문에 그랬지 싶다. 당장 FBV만 사용하더라도 각 함수들의 첫 번째 인자로 request를 받는데 이는 HttpRequest의 인스턴스이며 어디로부터 오는지 전혀 이해할 수 없었고 궁금해하지도 않았다.

Django를 공부하다보니 인터넷 네트워크가 어떻게 작동하는 지 문득 궁금해지게 되었고 깊은 이해보다는 전체적인 프로세스를 전반적으로 다루어보자 싶어서 두루두루 공부한 것을 정리해 보려고 한다.

네트워크 기초

보통 네트워크를 공부한다고 하면 OSI 7계층TCP/IP 4계층이 있다. 더 큰 범주에 속해있는 것은 OSI 7계층으로서 네트워크 전송 시 데이터 표준을 정리한 것이라고 한다. TCP/IP 4계층은 이에 속하는 더 작은 개념으로서 이 이론을 실제로 사용하는 인터넷 네트워크 표준이 TCP/IP 4계층이라고 한다. 그리고 TCP/IP 4계층은 인터넷 모델이라고도 부른다.

  1. 컴퓨터 네트워크의 종류
    컴퓨터 네트워크는 여러 대의 컴퓨터를 서로 연결하여 서로 데이터를 주고받을 수 있도록 망이 사전에 구축된 것을 말한다. 통신망의 거리에 따라 LAN(Local Area Network) 그리고 WAN(Wide Area Network)으로 나눈다.
    • LAN = Local Area Network
      • 가정이나 사무실처럼 실내에서 비교적 근거리에 위치한 컴퓨터들이 연결된 것을 의미한다.
    • WAN = Wide Area Network
      • 집 밖이나 회사 건물 밖처럼 비교적 먼 거리에 위치한 컴퓨터들과 연결된 것을 말한다.

공부하기 전까지 인터넷 = 네트워크라고 생각하고 있었는데, 여러 네트워크 중에서 가장 규모가 큰 네트워크가 인터넷이라고 한다. 또한 스마트폰을 연결하기 위해 무선 기술을 활용한 것을 무선 네트워크(모바일 네트워크)라고 한다.

  • 3G / 4G
  • WiMAX
  • Wi-Fi

네트워크에 연결된 컴퓨터들은 서버 혹은 클라이언트에 속하게 되는데 서비스를 제공하는 쪽을 서버(Server) / 서비스를 제공 받는 쪽을 클라이언트(Client)라고 부른다. 서버와 클라이언트의 역할은 하드웨어로 구분하는 것이 아니라 어떤 역할의 프로그램을 설치하느냐에 따라 결정된다.

네트워크 전달방식

네트워크 전달 방식에는 패킷 교환 방식회선 교환 방식이 있다. 컴퓨터 네트워크에서는 이메일이나 파일과 같은 데이터를 패킷(Packet)으로 분할한 후 주고 받는다. 이때에 패킷은 어디로 전달되야하는지 알 수 있도록 주소(address)정보를 가지고 있다.

  1. 회선 교환 방식

    • 아날로그 방식의 유선전화 또는 3G 휴대전화가 사용했다
    • 통신하려는 양쪽 디바이스가 하나의 통신 경로를 점유하는 방식이다
    • 때문에 일대일 통신을 기본으로 한다
    • 통신 속도가 안정적이라는 장점이 있다
  2. 패킷 교환 방식

    • 주고받을 데이터는 작게 쪼갠 후 주고받는다
    • 다른 데이터 조각들과 섞여서 주고 받곤한다
    • 통신 경로를 공유하며 전달하기 때문에 여러 상대와 통신할때 효과적이다
    • 주고받는 패킷이 증가하면 전송 속도가 느려지는 단점이 있다

계층 모델

위에서 말한 것처럼 OSI 7계층과 TCP/IP 4계층이 있는데, 인터넷 모델이라고 불리기도하는 TCP/IP 4계층에 대해서 살펴보기로 하자. 총 네 가지의 계층으로 구분되어진다.

  1. 애플리케이션 계층 - server / client / HTTP / SSH와 같이 서비스를 제공하는 부분
  2. 트랜스포트 계층 - TCP / UDP
  3. 인터넷 계층 - IP / ICMP / router
  4. 네트워크 인터페이스 계층 - Ethernet / Wireless LAN / MAC address

위 와 같이 네 가지의 계층이 있다. 4개 계층 중 서비스의 내용을 결정하는 것은 애플리케이션 계층 하나 뿐이며, 나머지 3개 계층은 보이지 않는 곳에서 통신 기능을 담당하고 있다.

애플리케이션 계층

사용자가 실제로 체감할 수 있는 서비스를 제공하는 계층이다. 웹 서비스를 예로 들면, 웹 브라우저와 웹 서버는 애플리케이션 계층에 속하는 프로그램이 된다. 데이터 전송에 관한 처리는 하위 계층에 위임하며 서비스를 처리하는 데에 집중하는 계층이다.

트랜스포트 계층

상위 계층인 애플리케이션 계층으로부터 전달받은 데이터를 목적지 애플리케이션 계층의 프로그램까지 전달하는 역할을 담당한다. 또한 데이터가 제대로 전달되지 않았을 때 재전송하는 것도 이 계층에서 맡고 있는 역할이다.

인터넷 계층

데이터에 주소 정보를 붙여 수신지(목적지)까지 전달하는 역할을 한다. 목적지까지 도달하기 위한 경로가 있는데 네트워크를 넘나들면서 최적의 경로를 탐색하는 데에 라우터라는 장비를 사용한다.

네트워크 인터페이스 계층

유선 LAN 어댑터나 무선 LAN 어댑터가 처리할 수 있는 형태로 데이터를 변환하고 이 데이터를 목적지까지 전달하는 역할을 한다. 물리적으로 인접하여 연결된 장비까지 어떻게 하면 데이터를 잘 전달할까에 초점을 맞추고 있다.

프로토콜(protocol)

원활한 데이터 송수신을 위해 지켜야할 통신 규약 혹은 절차를 프로토콜이라고 부른다. 통신 절차가 기술된 것 뿐이기 때문에 물리적 형태가 존재하지는 않는다. 하지만 프로토콜에 맞게 동작하도록 만들어진 프로그램이나 통신장비,데이터 포멧 등이 존재하고, 프로토콜을 잘 지켰을때 원활한 통신이 가능해진다.

  • 애플리케이션 계층

    • 프로토콜 : HTTP
    • HTTP 프로토콜에 따라 동작하도록 만들어진 웹 브라우저
  • 트랜스포트 계층 / 인터넷 계층

    • 프로토콜 : TCP/IP
    • TCP/IP 프로토콜에 따라 동작하도록 만들어진 OS 내장 통신 프로그램
  • 네트워크 인터페이스 계층

    • 프로토콜 : Ethernet(이더넷)
    • Ethernet 프로토콜에 따라 동작하도록 만들어진 네트워크 어댑터용 디바이스 드라이버

또한 이더넷에 맞게 동작하도록 만들어진 LAN 케이블과 네트워크 허브가 있다(하드웨어 부분)

대표적인 프로토콜

  1. 애플리케이션 계층
    • HTTP : 하이퍼텍스트를 주고받음(웹 페이지)
    • HTTPS : 보안을 위해 웹 페이지 데이터를 주고받는 과정을 암호화
    • POP3 : 서버에 보관된 수신 메일을 가져옴
    • SMTP : 메일 송신
    • FTP : 파일 전송
    • Telnet : 컴퓨터 원격 제어
    • SSH : 보안을 위해 컴퓨터를 원격제어하는 과정을 암호화
    • SMB : 윈도 컴퓨터와 파일 공유
    • DHCP : 사설 IP(private IP)를 동적 할당
    • DNS : 도메인 이름과 IP 주소를 변환
    • SSL : 보안을 위해 통신 과정에서 주고받는 데이터를 암호화
  2. 트랜스포트 계층
    • TCP : 애플리케이션의 데이터를 송수신. 데이터의 정확한 전달을 중시함
    • UDP : 애플리케이션의 데이터를 송수신. 데이터의 전송 속도를 중시함
  3. 인터넷 계층
    • IP : 패킷을 목적지까지 전달
    • ICMP : IP의 통신 오류를 전달
    • IPsec : 패킷을 암호화하여 전달
    • ARP : 네트워크 장비의 MAC address를 알아냄
  4. 네트워크 인터페이스 계층
    • Ethernet(이더넷): 일반 금속 케이블이나 광 케이블을 통해 데이터를 전달
    • PPP : 사용자 인증 후에 원격지의 장비와 통신

[참고]
http://pigbrain.github.io/network/2017/03/08/OSI7_on_Network
http://hahahoho5915.tistory.com/15
http://tar-cvzf-studybackup-tar-gz.tistory.com/38

Share