[네트워크] 컴퓨터네트워크 및 인터넷 역사

컴퓨터네트워크 및 인터넷 역사


네트워크의 구성 요소

  1. network edge

    보통의 사용자들, 서버들은 가장자리(edge)에 위치한다.

    웹브라우저들이 가장자리에 있다.

  2. network core

    사용자들을 연결시켜주는 특수한 역할을 하는 컴퓨터들.(라우터)

    서로 연결되어있는 라우터들의 집합체이다.

  3. access networks

    장치들을 연결시켜주는 링크들.

    즉, 네트워크에 접속하는 네트워크이다. 호스트가 네트워크 코어에 접속하는데 도움을 주는 중간 단계 네트워크이다.

    유선(랜선), 무선(와이파이) 등.


프로토콜

프로토콜이란 서로 다른 개체가 의사소통을 하기 위해 일정한 룰이 필요한데, 그 룰을 프로토콜이라고 한다.

의사소통을 위해 정해진 규칙.

패킷 스위칭

패킷 스위칭(Packet switching)이란 데이터를 패킷이라고 하는 작은 단위로 나눠 고르게 전송하는 방식이다.

서킷 스위칭(Circuit switching)은 하나의 회선을 할당받아 데이터를 전송하는 방식이다. 출발지부터 목적지까지 도착하는데 사용되는 회선 하나를 독점하여 다른 데이터가 끼어들 수 없다.

전화망을 이용하는 전달방식이 서킷 스위칭인데, 연결해놓고 사용하지 않으면 자원낭비가 심하다. 따라서 출발지와 목적지 정보를 갖고 라우팅 알고리즘을 통해 목적지에 도달하는 방식인 패킷 스위칭을 주로 이용한다. 다만, 이러한 과정에서 딜레이와 유실이 발생할 수 있다.

Delay, Loss

Delay

패킷 스위칭을 통해 데이터를 전송하면 데이터 지연(delay)과 유실(loss)가 발생할 수 있다.

라우터가 패킷을 받았을 때, 라우터는 최종 목적지를 판단하여 어떤 라우터로 패킷을 전송할지 선택한다. 이때 프로세싱 딜레이가 발생한다.

라우터가 선택된 패킷은 큐로 들어가 대기한다. 큐에 먼저 들어온 패킷들이 처리될 때까지 기다려야 하는데 이때 큐잉 딜레이가 발생한다.

순서가 된 패킷이 라우터에서 회선을 통해 나가야 하는데 라우터에서 마지막 비트까지 나가는데 걸리는 시간을 트랜스미션 딜레이라고 한다.

회선을 통해 다음 라우터까지 도달하는 시간을 프로파게이션 딜레이라고 한다.

고속도로를 예로 들면 톨게이트가 라우터 역할이다. 차들이 라우터를 원활하게 선택하기 위해서 톨게이트를 하이패스로 만드는 방법이 있다. 즉, 라우터를 좋은 것으로 개선하면 프로세싱 딜레이를 줄일 수 있다.

트랜스미션 딜레이는 회선을 확장하면 해결이 가능하다. 고속도로를 예로 들면 차선을 늘리는 것이다.

큐잉 딜레이는 해결하기 어려운 딜레이이다. 명절때를 생각해보면 차들이 한번에 몰리면 처리가 안된다. 마찬가지로 패킷들이 한번에 몰리면 해결하기 어렵다.

Loss

패킷을 큐에 넣어야 하는데 큐가 다 차있으면 더이상 들어갈 수 없다. 이때 못들어간 패킷은 버려지게 되는데 이를 패킷 유실(Packet Loss)라고 한다.

패킷 유실이 될 경우 재전송이 필요하다. 직전 라우터가 유실된 패킷을 찾아 재전송하기에는 라우터가 너무 바쁘다. 또한 라우터는 IP 위에 TCP가 존재하지 않는다.

따라서 클라이언트가 다시 재전송하게 된다. 클라이언트의 OS에 위치한 TCP가 재전송하게 된다.


클라이언트 - 서버

서버

네트워크에서 다른 컴퓨터나 소프트웨어와 같은 클라이언트에게 서비스를 제공하는 컴퓨터.

고정된 IP 주소를 갖고 켜져있어야 함.

클라이언트

네트워크를 이용하여 서버측에 서비스 요청을 하는 컴퓨터.

소켓

응용계층(APP)과 전송계층(Transport) 사이에서 데이터를 주고받을 수 있도록 네트워크 환경에 연결할 수 있게 만들어진 연결부.

즉, TCP/IP 기반 네트워크 통신에서 데이터 송수신의 마지막 접점이다.

HTTP

HTTP란 HyperText Transfer Protocol의 약자로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. 응용계층에 속한다.

TCP/IP를 이용하는 응용 프로토콜이며, 연결 상태를 유지하지 않는다.

stateless하다. 즉, 서버가 클라이언트의 요청에 대한 정보를 유지하지 않는다.

연결을 유지하지 않기 때문에 요청/응답 방식으로 동작한다.

non-persistent HTTP

TCP 연결 한 번에 최대 하나의 객체를 전송할 수 있다.

여러개의 객체를 전송하기 위해서는 여러번의 연결이 필요하다.

persistent HTTP

TCP 연결 한 번에 여러 개의 객체를 전송할 수 있다.