컴퓨터네트워크

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

waterclean101 2023. 10. 24. 09:56

컴퓨터 네트워크 기본2

 

지난 강의 요약

  • 인터넷에서 제공하는 전송 서비스는 두 가지: TCP와 UDP. TCP는 신뢰성 있고 다양한 좋은 일들을 해주는 서비스이고 UDP는 아무것도 안 해주는 서비스.
  • 현재 인터넷은 패킷 기반의 전송 방식을 사용 즉, 패킷은 비트들의 집합인데 패킷이라고 묶여진 이 비트들은 출발지에서부터 목적지까지 라우터를 거치면서 항상 한 묶음으로 같이 다닌다(사용자가 보내는 데이터가 패킷이라는 한 묶음 단위로 이동한다).
  • 패킷 기반에 전송의 문제점: 라우터에서 패킷을 받아서 알맞은 방향으로 보내주는데 한꺼번에 많은 사용자가 동시에 이 라우터에 패킷을 보낼 경우에 즉, 라우터가 아웃고잉 엣지를 뿜어낼 수 있는 양보다 더 많은 패킷이 들어오게 되면 어쩔 수 없이 ‘큐’라는 공간에 패킷이 쌓이게 된다. 쌓이다가 큐라는 버퍼 공간보다 들어오는 패킷의 수가 많다면 패킷 유실이 일어난다. 현재 인터넷에서 일어나는 패킷 유실의 90% 이상이 라우터의 큐에서 발생한다.
  • 라우터에서 패킷이 거쳐갈 때 생기는 네가지 딜레이
    • 라우터에서 패킷을 처음 받았을 때 최종 목적지가 어디인지, 최종 목적지로 가기 위해 다음에는 어느 라우터로 보내야 하는지 등 이 패킷을 검사하는 데 걸리는 시간. - 프로세싱 딜레이
    • 검사를 마치고 다음 목적지에 맞는 아웃고잉 링크에 해당하는 버퍼로 저장을 시키는데 그 버퍼 큐에 이미 기다리는 패킷이 있다면 자기 차례를 기다려야 한다. - 큐잉 딜레이
    • 큐에서 기다리다가 자기 차례가 돼서 전송이 돼야 하는데 하나의 패킷이 온전하게 링크로 뿜어져 나갈 때까지 걸린 시간 - 트랜스미션 딜레이
    • 패킷이 링크에 올라와서 다음 라우터까지 도달할 때까지 걸리는 시간 - 프로퍼게션 딜레이

 

네트워크 7 or 4 계층

 

Application Layer

  • 네트워크 애플리케이션들은 그냥 애플리케이션. 애플리케이션이니까 프로그램이고 즉 결국에는 그냥 네트워크 기능이 있는 프로세스. 가장 흔한 프로세스가 웹 브라우저라고 할 수 있음.
  • 네트워크 프로그램을 실제로 만들 때는 server와 client 사이에 라우터들이 있다는 것을 전혀 신경 쓸 필요가 없다. 단순히 반대편에 있는 프로세스와 프로세스 간에 통신이라고만 생각하면 된다. 왜? 애플리케이션 계층이라는 건 네트워크 엣지 즉 클라이언트와 서버에만 존재하는 것이고 라우터에는 이러한 계층이 존재하지 않는다. 라우터에는 네트워크 레이어까지만 존재.

 

Server & Client

  • 네트워크 애플리케이션은 네트워크 엣지에 있는 서버와 클라이언트에서 동작한다.
  • 클라이언트는 웹브라우저라고 생각하면 되고 서버는 웹서버라고 생각하면 된다. 서버는 항상 동작을 해야 되고 네트워크상에 인터넷 상에 존재하는 모든 컴퓨터들은 각자의 주소를 가지고 있어야 한다. → 그 주소가 IP 주소.
  • 그 중에서 서버는 permanant 한 IP 주소 즉, 바뀌지 않고 고정된 IP 주소를 갖고 있어야 하고 클라이언트는 IP 주소가 고정되지 않아도 된다.
  • 프로세스들 사이의 통신, ‘인터프로세스 커뮤니케이션’을 위해서 os가 system call들 즉 인터페이스를 만들어 놨는데 클라이언트와 서버 사이의 통신이 이와 크게 다를 것 없고 단지 그냥 다른 컴퓨터 상에 위치한다는 것 뿐이다. 그래서 다른 컴퓨터 상에 위치하는 프로세스와 통신을 하기 위한 인터페이스를 OS 내부에서 다 만들어놨고 그게 바로 **소켓(socket)**이다.
  • 소켓이라는 인터페이스를 만들어서 다른 프로세스와 연결시키려면 최소한 그 프로세스에 해당하는 소켓과 연결하고 싶다는 ‘의사 표현’을 해야 하고 그 전에 소켓의 주소를 알아야 된다. → IP address와 port number의 combination.
  • IP 주소는 인터넷 상에 존재하는 컴퓨터를 지칭하는 주소, 컴퓨터 안에서 특정 프로세스를 지칭하는 것이 바로 포트의 역할.
  • 웹 서버를 운영하는 거의 모든 서버들이 포트를 80번으로 사용하고 있다. 왜? 서버는 24시간 켜있어야 하고 주소는 사람들이 찾아갈 수 있게 변하면 안된다. 포트 넘버는 찾아가기 쉽게 동일하게 쓰자 해서 80번으로 통일. 그렇지 않으면 dns에서 포트까지 다 해줘야 한다.

 

Application Layer의 하위 계층인 Transport Layer

  • 계층이라는 개념은 하위 계층에서 상위 계층한테 어떠한 기능 즉 서비스를 제공하는 것.
  • 애플리케이션 레이어의 애플리케이션 프로토콜들은 바로 하위 계층인 트랜스포트 레이어에서 제공하는 기능을 사용하는 것, 서비스를 받는 것이다. 그렇다면 트랜스포트 레이어에서 제공하는 기능이 무엇이 있는지가 중요하다.
  • Application 계층에서 Transport 계층이 제공해주기를 희망하는 기능들
    • data intergrity: 데이터가 유출되지 않고 온전하게 목적지까지 도착했으면 좋겠다.
    • throughput: 내가 보내는 데이터가 최소 예를 들면 1기가 BPS 이상 용량이 나왔으면 좋겠다.
    • timing: 내가 보내는 데이터가 예를 들면 몇 1ms 내에 목적지 도착했으면 좋겠다는 시간 개념에 대한 희망사항.
    • security: 내가 보낸 데이터가 안전했으면 좋겠다.
  • 위의 희망사항들 중 현재 transport layer에서 제공해주는 서비스는 한 가지밖에 없다. data intergrity. 데이터가 유출되지 않고 온전히 목적지까지 도달해 주는 것에 대한 서비스만 제공해준다. 이 기능을 TCP라는 프로토콜이 제공을 해주고 UDP는 그마저도 제공해주지 않는다.
  • 따라서 나머지 기능들은 따로 만들어야 한다.

 

유명한 애플리케이션들이 어떤 트랜스포트 레이어 프로토콜을 사용하는지

 

HTTP(HyperText Transfer Protocol)

  • ‘하이퍼텍스트’는 텍스트인데 중간 중간에 링크가 있는 텍스트. 이런 텍스트들을 전송하는 프로토콜이 HTTP 프로토콜.
  • HTTP 프로토콜은 굉장히 단순한 프로토콜. 결국에는 요청하는 웹 페이지 즉 하이퍼 텍스트 파일 하나 줘 하면 서버가 알았어 줄게. request, response 끝. 그냥 딱 메시지 종류가 request, response 두 가지밖에 없다.
  • HTTP 특징 - uses TCP, stateless
    • HTTP가 애플리케이션 레이어 프로토콜이기 때문에 당연히 트랜스포트 레이어 서비스를 이용한다. 그 중에서도 TCP를 사용. request, response 메세지 이전에 TCP 커넥션이라는 걸 해줘야 한다. 즉 HTTP 메세지가 교환되기 전에 TCP 커넥션을 생성해야 한다.
    • HTTP는 stateless하다. 상태가 없다. HTTP는 정말 단순해서 request가 들어오면 단순히 그 request에 해당하는 파일 디스크에서 읽어서 파일 인스턴스 담아서 보내주고 끝. 더 이상 기억하지 않는다.

 

HTTP connections

  • HTTP 는 TCP 커넥션을 기반으로 그 위에서 메시지를 주고 받는다고 했는데 이 TCP 커넥션을 사용하는 방식에 따라서 두 가지로 나눠진다. persistent HTTP와 non-persistent HTTP
  • TCP 커넥션을 퍼시턴트하게 사용할 것인지 안 할 것인지. 즉 둘 사이에 HTTP 메시지(request, response)를 주고받으려면 TCP 커넥션을 만들어야 하니까 TCP 커넥션을 만들어서 메시지를 주고 받은 후 끊으면 non-persistent고 끊지 않고 이걸 계속 유지하면서 계속 재사용하면 그게 persistent.
    • ex) 웹브라우저가 웹서버에게 네이버 기사 페이지 하이퍼텍스트를 읽어오려고 하는데 그 하이퍼 텍스트에는 다른 오브젝트 즉, 그림 파일 같은 게 여러 개 달려있다. 그럼 결국에는 이 메인 페이지와 이 그림 파일 각각을 다 가져와야 되는데 우선은 메인 페이지를 요청하기 위해서 TCP 커네션을 생성하고 메인 페이지에 대한 request를 보낸다. 그럼 웹서버에서 메인 페이지에 대한 response를 주고 이 상황에서 request와 response가 한번 왔다 갔다 트렌지션이 끝났다 이 상황에서 TCP 커넥션을 끊고 다시 TCP 커넥션을 만들어서 이런 각각 그림을 가져오게 되면 그게 non-persistent, persistent는 끊지 않고 유지한 상태로 이 TCP 컨디션을 계속 사용해서 여기에 해당하는 그림을 주고 받는 등 계속 사용하는 것.
  • 현재 웹 브라우저에서는 persistent TCP를 디폴트로 사용한다.

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

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
1. 컴퓨터네트워크 기본1  (1) 2023.10.23