티스토리 뷰
본 내용은 재학중인 학교 강의에 개인적인 공부를 더한 흔적입니다. 때문에 제가 조금은 오해한 부분이 있을 수 있습니다. 발견하실 경우 댓글로 남겨주시면 정말 감사하겠습니다 !! (책은 Computer_Networking_A_Top-Down_Approach를 참고했습니다)
참고 : Packet switching vs Circuit switching
Store-and-Forward
패킷 스위칭 네트워크에서는 라우터가 패킷을 온전히 다 수신한 후 저장을 한다. 그런 다음 아웃 바운드 링크(전송하는 쪽의 링크)로 패킷을 내보낼 수 있다. 이 방식이 store-and-forward 방식으로 패킷 스위칭에서는 필수로 이 과정이 시행돼야 한다.
이러한 이유는 패킷의 정보가 헤더 부분에 있고, 이를 열어봐야 하기 때문이다.
때문에 라우터는
패킷의 모든 비트를 수신 -> 패킷의 헤더 열기 -> 헤더 다시 포장 -> 송신쪽 링크로 내리기 -> 실제 송신
의 과정을 수행해야 하고 이러한 방식이 store-and-forwardSource(송신 측)와 라우터사이의 링크가 초당 보낼 수 있는 비트 수를 R bps라 하고, 패킷의 총 비트 수를 L이라 하면 패킷이 라우터에 수신되는 시간은 L/R이 된다. (단, 여기서 비트가 실제 빛의 속도로 링크를 지나가는 시간은 무시)
예를들어 링크가 1초에 100 비트를 보낼 수 있다면 100 bps가 되고, 패킷의 총 비트 수가 100 바이트라 하면
100 바이트 = 800 비트기 때문에 800/100 = 8초가 된다. (실제로는 bps가 훨씬 크겠죠?)
Delay
실제로 패킷이 링크에서 보내지는데 걸리는 delay 말고도 고려해야 할 다른 delay들이 있다.
패킷이 upstream node(수신 되는 쪽의 링크)에서 outbound link(송신할 링크)로 가는 과정에는 queueing delay라는 것이 존재할 수 있다. 이는 만약 패킷이 다 도착하더라도 이전에 도착한 패킷들이 아직 송신 중일 때 발생한다.
패킷들은 도착했을 때 다른 패킷들이 송신 중이라면 queue 형식의 buffer에 대기해야 한다. 따라서 먼저 온 패킷들이 먼저 송신되고, 나중에 온 패킷들은 대기해야 하는 상황이 오고 이 때 delay가 발생한다.
라우터에 발생하는 delay들을 정리해 보면 4가지가 있다.
Processing Delay
Queuing Delay
이 queuing delay 때문에 패킷 스위칭 네트워크에서의 총 delay 시간을 에측하기 어렵다.
Transmission Delay
Propagation Delay
위의 4개의 Delay를 다 합친 시간이 노드 상에서의 Delay(nodal)이 된다.
하지만 종단 시스템간의 d(end-to-end) = N(d(pro) + d(trans) + d(prop))로 queuing delay를 제외한다. 이유는 위에서 말했듯이 예측할 수 없기 때문이다. (N은 거치는 라우터의 개수+1)
Packet Loss
위의 그림을 보면 A와 B가 라우터에 10 Mbps로 패킷을 전송한다. 하지만 라우터는 1.5 Mbps로 수신한 패킷을 다시 송신한다.
만약 A와 B가 보내는 패킷의 양이 많아지면 (트래픽이 많아지면) 라우터의 Queue에 대기하는 패킷이 많아지게 될 것이다. 하지만 queue의 크기는 한정되어 있다. 때문에 queue가 다 차버렸을 경우 그 뒤에 오는 패킷은 손실이 될 수 있다.
때문에 보통 수신받는 쪽의 링크 전송률보다 송신하는 쪽의 링크 전송률이 높아야 한다.
'CS > Network' 카테고리의 다른 글
[네트워크] OSI 7 계층 개요 (1) | 2023.03.26 |
---|---|
[네트워크] 소켓 프로그래밍 개요 (0) | 2023.03.26 |
Network Layer (0) | 2019.05.26 |
raw socket을 이용한 packet sniffing (0) | 2019.05.06 |
Packet switching vs Circuit switching (0) | 2019.03.20 |
- Total
- Today
- Yesterday
- jsp
- 생활코딩 javascript
- Do it! 정직하게 코딩하며 배우는 딥러닝 입문
- 지옥에서 온 git
- Spring Data JPA
- Spring
- 스프링 mvc
- Gradle
- 프로그래머스
- 파이썬 for Beginner 연습문제
- JPA
- git
- 파이썬 for Beginner 솔루션
- Computer_Networking_A_Top-Down_Approach
- Thymeleaf
- 선형 회귀
- 방명록 프로젝트
- 스프링 테스트
- git branch
- 쉘 코드
- 쉽게 배우는 운영체제
- 패킷 스위칭
- 스프링
- git merge
- spring mvc
- 운영체제 반효경
- 김영환
- Spring Boot
- 스프링 컨테이너
- Python Cookbook
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |