컴퓨터네트워크

1. 컴퓨터네트워크 기본1

waterclean101 2023. 10. 23. 09:22

kocw 컴퓨터네트워크 기본1

인터넷의 역사 간략히

최초의 인터넷이라고 불리는 아파넷(ARPAnet)의 노드는 컴퓨터 4대로 1969년에 시작되어 현재는 하나의 우주처럼 생태계가 형성되었고 계속 팽창 중이다.

위의 개념적인 인터넷의 형태에서 모습에서 우리는 네트워크 엣지 즉, 가장자리 어딘가에 위치한다. 클라이언트 뿐만 아니라 웹서버같은 서버들도 사실 가장자리에 위치한다. 그럼 가운데에 있는 컴퓨터들은? 라우터

라우터는 메시지를 전달받아서 목적지를 향해서 데이터를 쭉 전달해주는 그런 단순한 일을 한다.

 

network 구조

  • network edge: 랩탑, 데스크탑, 웹서버 등 어플리케이션과 호스트들
  • network core: 라우터, network of networks(서로를 이어주는 링크들 - 케이블, 모뎀선, 렘, 무선 링크 등)
  • access networks, physical media: 커뮤니케이션 링크들

network edge

  • end systems(hosts): 웹, 이메일 같은 run application programs
  • client/server model: 웹브라우저, 웹서버, 이메일 클라이언트, 서버 등
  • peer-peer model: 스카이프, 토렌트 등

현재 인터넷에서 사용자에게 제공하는 데이터 통신((Transmission) 서비스는 두 가지 종류가 있다. 첫 번째는 connection-oriented service라고 불리는 데이터 전달 방식. 나머지 하나는 connectionless service.

 

connection-oriented service(TCP)

  • TCP(Transmission Control Protocol)가 바로 이 connection-oriented service를 제공하는 통신 서비스.
  • TCP는 클라이언트 사용자에게 아래 세 가지를 제공한다.
    • reliable, in-order byte-stream data transfer: 메시지가 유출되지 않고 내가 보낸 그대로 가는, 신뢰성이 있게 하는, 내가 보낸 순서를 지키면서 도착지까지 가는 것.
    • flow control: sender가 receiver에 데이터를 전송을 할 때 sender가 보내는 속도를 receiver가 소화할 수 있는 속도에 맞춰서 조절을 해주는 것.
    • congestion control: sender와 receiver 사이에 네트워크 상황에 맞춰서 그 네트워크가 받아들일 수 있는 능력치만큼으로 보내주는 것.

 

connectionless service(UDP)

  • UDP(User Datagram Protocol)의 특징
    • connectionless
    • unreliable data transfer
    • no flow control
    • no congestion control

→ TCP는 reliable하고 flow control 등 좋은 것 많이 제공해주는데 UDP는 아무것도 안 해준다. 그럼에도 UDP를 쓸 이유가 있나? 속도가 빠르다.

  • reliable이라는 속성이 필요한 경우는 TCP 쓰면 되고 굳이 reliable 한 컨텍스트가 아니면 UDP 쓰면 된다. ec) 음성 전화 - 오디어 패킷 몇 개 유실되어도 사람들은 감지하지 못한다. 몇 개 유실돼도 상관없으니 UDP를 쓰고, 대부분의 경우 reliable한 게 필요하니까 TCP를 쓴다.
  • 단 TCP는 비싸다. 즉, 컴퓨팅 자원과 네트워크 자원을 많이 소모한다.

 

What’s a protocol?

둘 사이에 이야기하는 어떤 암묵적인 약속. 대화 약속. 서로 간의 어떤 준비 동작. 어떤 방식으로 얘기할 건지를 서로 미리 약속하지 않으면 대화가 안 통한다. 당연히 기계들 사이에서도 그런 약속이 필요하다.

 

The Network Core

네트워크 중심에는 라우터가 위치해 데이터를 목적지까지 전달해준다. 과연 어떤 방식으로 전달하나? 메시지를 전달하는 방식에는 크게 두 가지 circuit switching 규칙과 packet switching 규칙. 인터넷 넷에서는 packet switching 방식을 사용한다.

  • circuit switching
    • 출발지에서부터 목적지까지 가는 길을 미리 예약을 해놓고 특정 사용자만을 위해 사용하게 만들어 놓은 규칙. 예전 유선 전화가 이 방식을 사용.
  • packet switching
    • 유저가 보내는 메시지들 패킷들을 그냥 패킷 단위로 받아서 그때그때 올바른 방향으로 포워딩해주는 규칙.

 

packet switching이기 때문에 어쩔 수 없이 생기는 문제들(delay)

  • nodal processing delay: 라우터에서 새로운 패킷를 받으면 이 패킷이 제대된 패킷인가 확인하고 목적지가 어디인지 확인해서 보내는 일을 해야 한다. 새로운 패킷을 받으면 그 패킷을 검사하고 패킷 목적지가 어디인지 확인하는 작업에서 걸리는 시간을 프로세싱 딜레이라고 한다.
  • queueing delay: 패킷의 목적지에 따라서 알맞은 outgoing edge로 보내야 하는데 유저가 많이 몰려서 나가는 속도보다 들어 속도가 더 빠를 경우 즉, 나가는 link의 bandwidth보다 더 크다면 쭉 줄이 생긴다. 유실을 막기 위해 나가기를 기다리는 패킷을 위해 임시 버퍼 혹은 큐라고 불리는 저장 장소가 라우터에 존재한다. 바로 이 큐에서 기다리는 시간이 바로 queueing delay.
  • transmission delay: 큐 안에서 나갈 차례를 쭉 기다리다가 언젠가 내가 제일 앞에 섰다고 그러면 나가면 되지만 그 나가는 순간에 또 걸리는 딜레이가 있다. 결국 패킷은 데이터 즉, 비트의 집합이라서 첫 번째 비트부터 마지막 비트까지 순서대로 링크로 뿜어져 나가는 것인데 transmission delay는 첫 번째 비트가 나가는 그 순간부터 시작해서 마지막 비트가 온전하게 링크로 완전히 뿜어져 갈 때까지 걸리는 시간을 말한다. bandwidth가 크면 클수록 transmission delay가 작다.
  • propagation delay: 마지막 비트가 링크에 올라와서 다음 라우터까지 도달할 때까지 걸리는 시간. 단순히 비트 하나가 올라오는 순간부터 도달하는 시간인데 결국에는 전자기파가 움직이는 속도, 그냥 빛의 속도라서 링크 거리를 빛의 속도로 나눈 것이라고 볼 수 있다.

→ 라우터에서 패킷을 처음 최초에 받았을 때 검사하고 구간은 processing delay. 그 다음에 큐안에 집어넣어서 큐에서 자기 차례가 될 때까지 걸리는 시간이 queueing delay. 그리고 큐 제일 앞에 서서 파이프에 온전히 뿜어져 나갈 때까지 걸리는 시간이 transmission delay. 그리고 마지막 비트가 그 다음 라우터까지 도달할 때까지 걸리는 시간 propagation delay.

 

delay를 줄이고자 하는 노력들

  • propagation delay: 신의 영역. 빛의 속도니까.
  • nodal processing delay: 라우터를 좋은 거 사서 라우터 성능을 개선
  • transmission delay: 케이블공사 공사해서 bandwidth 늘리기.
  • queueing delay: 가장 골치 아픔. 왜? 인터넷을 사용하는 유저들이 다 각자 종합적으로 여기에 기여하기 때문. 네트워크 상에서 생긴 딜레이가 결국에는 저 큐잉 딜레이에서 발생하는 것이고 사람들이 몰리면 큐가 늘어나는데 큐 크기가 무한대일 수는 없어서 최악의 경우 큐보다 더 많은 데이터들이 들어오면 패킷 유실이 발생한다. 인터넷 상에서 발생하는 패킷 로스 90% 이상은 다 큐에서 발생.

 

패킷 유실의 경우

TCP는 reliable 서비스를 제공해준다고 했는데 패킷이 유실되었을 때는? 재전송한다. 이 때 유실된 라우터가 재전송하는 것이 아닌 말단에, 즉 클라이언트와 서버에서 다시 재전송을 하고 중간 라우터들은 단순히 전달만 한다. 라우터는 최대한 단순 작업에 최적화돼 있고 나머지 재전송에 대한 인테리전스 기능은 다 말단에서 한다.

'컴퓨터네트워크' 카테고리의 다른 글

6. 트랜스포트 계층 2-2  (1) 2023.10.31
5. 트랜스포트 계층 2-1  (0) 2023.10.27
4. 트랜스포트 계층 1  (0) 2023.10.26
3. 애플리케이션 계층 1  (0) 2023.10.25
2. 컴퓨터네트워크 기본2  (0) 2023.10.24