-
[네트워크] 네트워크 개요: 네트워크 구조 및 네트워크 딜레이 (Packet-Switching Delay)테크 2024. 3. 18. 19:02
학교에서 배웠던 네트워크 수업이 살짝 가물가물해서 정리를 해봤습니다.
요약하되 중요한 내용을 빠뜨리지 않고 다 포함했습니다.
네트워크를 완전히 모르는 사람들이 이 글을 읽는 것을 추천하지 않습니다.
네트워크를 어느 정도 알고 있는 상태에서 지식을 정리한다는 마음으로 읽으면 좋을 것 같습니다.
1. Network structure
네트워크 구조에는 크게 두 가지가 있습니다.
- Network edge
- Network core
1.1 Network edge
- End systems(hosts): Web, E-mail과 같은 app을 실행합니다.
- Client/Server model
- Peer-to-Peer model
※ 프로토콜 (Protocol): 커뮤니케이션 약속
host 간 데이터를 전송할 때 두 개의 프로토콜 (TCP and UDP) 중 하나를 반드시 따라야 합니다. ← Transport Layer
- Connection-oriented
- Connection-less
Connection-Oriented와 Connectionless는 네트워크에서 자주 나오는 표현인데,
그 중에서 transport layer에서 제공하는 프로토콜을 지칭할 때 많이 등장합니다.
예: connection-oriented → TCP, connection-less → UDP
Connection-oriented
- Reliable: 메시지가 유실되지 않는 것
- In-order byte-stream data transfer: 메시지의 순서가 지켜지는 것
- Flow control: Receiver의 소화 능력에 맞게 보내는 것
- Congestion control: End system을 연결하는 회선의 상황에 맞춰서 보내는 것
Transport layer에서 제공하는 TCP(Transmission Control Protocol)가 대표적인 connection-oriented protocol입니다.
효율성보다는 신뢰성을 더 중요시 여깁니다.
Connectionless
- Not reliable
Transport layer에서 제공하는 UDP(User Datagram Protocol)가 대표적인 connectionless protocol입니다.
신뢰성보다는 효율성을 더 중요시 여깁니다.
1.2 Network core
- 라우터(Router)들의 집합
- Dumb core ← 하는 일이 데이터 전송 밖에 없습니다.
- 라우터들은 서로 (유선/무선으로) 연결되어 있고 이 연결 통로로 데이터를 전송합니다.
데이터가 전송되는 방식은 2가지가 있습니다.
- Circuit-Switching: ex) 전화
- Packet-Switching: ex) 인터넷
우리가 널리 사용하는 인터넷에서는 packet-swtching 방식을 채택하고 있습니다.
Packet은 network layer에서의 데이터 조각을 의미하는데,
만약 packet을 모른다면 간단히 데이터라고 생각하면 좋을 것 같습니다.
Circuit-Switching
- 사용하고자 하는 회선을 예약해서 사용합니다.
- 만약 예약 때문에 특정 회선이 idle 하더라도 다른 누군가가 이 회선을 사용할 수 없습니다.
Packet-Switching
- Circuit-switching과는 달리 사용할 회선을 예약하는 것이 아니라 일단 무조건 사용하고 보는 방식입니다.
- 라우터에 들어오는 데이터는 queue에 넣어두고, 사용 가능한 회선이 있다면 그쪽으로 데이터를 보냅니다.
- 만약 한 라우터에 많은 packet이 몰린다면 문제가 발생할 수 있습니다. → Loss? Error?
2. Packet-Switched Network의 Delay
기본적으로 네트워크를 통해서 데이터가 전송될 때 delay는 필수로 뒤따라 옵니다.
물리적으로 전송이 필요하기 때문이죠.
Delay의 종류에는 4가지가 있습니다.
- Nodal processing delay
- Queueing delay
- Transmission delay
- Propagation delay
Nodal Processing delay
- 라우터에서 error bit를 체크하는 등의 작업으로 인해 걸리는 delay입니다.
- 라우터의 성능에 따라서 delay를 줄일 수 있습니다.
Queueing delay
- 라우터에 있는 queue이며, 라우터로 들어오는 입력값 데이터들을 보관하고 있습니다.
- Queue의 크기는 무한대가 아니기 때문에 traffic이 상당하면 packet loss가 가능합니다.
- Packet loss && TCP 상황일 때, 재전송이 필요합니다.
- 근본적으로 해결하기가 어려운 delay 입니다.
Transmission delay
- 데이터 전체가 뿜어져 나오는 시간을 의미하는 delay 입니다.
- Bandwidth가 클수록 delay는 짧아집니다.
- Propagation delay 와는 확연히 다른 것이기 때문에 주의해야 합니다.
Propagation delay
- 데이터가 회선을 통해 다음 라우터까지 도착하는 시간을 의미하는 delay 입니다.
- 회선이 길수록 delay는 길어집니다.
'테크' 카테고리의 다른 글
[네트워크] Application Layer (0) 2024.03.21 [Swift] SwiftUI 프로퍼티 래퍼 뿌시기 4: @EnvironmentObject (0) 2024.03.07 [Swift] SwiftUI 프로퍼티 래퍼 뿌시기 3: @ObservedObject와 @StateObject 차이 이해하기 (0) 2024.03.07 [Swift] SwiftUI 프로퍼티 래퍼 뿌시기 2: @Published 찍먹하기 (feat. ObservableObject) (2) 2024.03.06 [Swift] SwiftUI 프로퍼티 래퍼 뿌시기 1: @State와 @Binding (0) 2024.03.06