LAN케이블을 뽑으면 TCP 연결은 어떻게 될까?
구조: Layered
- L3는 L4의 기반 (Base)
- TCP의 Base 프로토콜은 IP
- 연결이라는 개념은 TCP에도 있고 Access 계층에도 있다
- TCP: 연결, connection, session
- Access계층: Link - up / down
- TCP는 L2 이더넷보다 위에 있다 = (L4가 성립하려면) L1, L2, L3가 성립했다는 전제 하에 L4가 성립
- 어떤 사람이 "대학 졸업했다"라고 하면 초중고는 이수했다는 전제 O
- TCP 연결이 성립했다
- Ethernet연결 (=Link-up 상태 = 물리적 통신 가능)상타에서 Virtual Circuit 연결이 성립
네트워킹에는 크게 두 가지 전송 모드가 있다: 회로 교환(Circuit Switching)과 패킷 교환(Packet Switching). 가상 회로(Virtual Circuit, VC)는 패킷 교환 네트워크에서 회로 교환의 원칙을 모방한 것이다.
Virtual Circuit (가상 회로)는 두 가지 주요 특성을 가진다:
- 연결 설정: 소스와 목적지 사이에 VC를 설정하기 위해 경로를 결정하고, 각 라우터에 VC 정보를 설정한다.
- 상태 유지: VC가 활성 상태일 때, 네트워크 요소(예: 라우터)는 VC에 대한 상태 정보를 유지한다.
Virtual Circuit의 주요 특징은 다음과 같다:
- 경로 선택: VC가 설정될 때, 경로가 결정되고 모든 패킷은 동일한 경로를 따른다.
- 패킷 순서: 패킷들은 도착한 순서대로 목적지에 도달한다. VC 때문에 중간 라우터에서 순서가 바뀌는 일은 없다.
- 오버헤드: VC 설정에는 초기 오버헤드가 필요하다. VC를 설정하고 해제할 때 추가 프로토콜 동작이 필요하다.
- 상태 정보: VC가 활성 상태일 때, 관련 라우터들은 해당 VC에 대한 상태 정보를 유지한다.
예컨대, ATM (Asynchronous Transfer Mode)와 Frame Relay는 VC를 사용하는 네트워크 기술 중 일부다.
결국, Virtual Circuit은 패킷 교환 네트워크에서 회로 교환의 일부 특성을 따라 일련의 패킷들이 동일한 경로로 전송되게 한다.
File 다운 받는 상황에서
❓ 용량이 있는 파일을 한번에 다운 받는 동안(토렌트X) 중간에 LAN케이블 분리하면?!
🤔 TCP 연결은 어떻게 될까?
- 5초, 10초, 15초, 20초... 실험해보면 멈췄던 게 그대로 잘 진행됨
- 어느 순간 되면 네트워크 이상으로 다운 못 받는 다고 뜸
Network 충격
- 물리적인 Link가 끊어진 것 (강제 Link down)
- L4가 유지될 때는 L2와의 간극이 있다
- 유선에서는 충격이 잘 안 나는데
- 무선에서는 허구한날 충돌
- 지하철에서 데이터 사용시 기지국 갈아탐 = 연결 끊고 다시 연결한 것
- 그 충격과 상관 없이 TCP 연결은 유지
- Virtual이라 논리적으로 유지
- RFC 표준에서는 2시간 정도로 정의하지만 실제로는 75초 정도
게임 서버
- 유저가 75초동안 LAN 케이블을 뽑았다 다시 연결해도 그 상태가 유지?
- 이렇게 되면 게임 서버가 정상 작동 될 수가 없다
- 동기화가 깨지는 경우 多
연결 세션 관리
- 실제 논리적 충격이 있었는데 프로그램이 인지를 못 하는건지
내가 신경 안 써도 되는 건지 확인하도록
- ping과는 다름!
- 프로토콜 설계할 때 Keep alive 메커니즘을 넣도록 함
LAN선을 뽑으면 일정 시간 동안 유지된다
- 프로토콜에 따라 다름
게임 해킹
- TCP 연결은 착각이다
게임 실화
- MMORPG 등은 사용자가 다중으로 동시에 접속하며 동기화 이슈가 심함
- 같은 게임, 같은 시간, 같은 공간으로 이동하면 보는 화면이 같음
- Server와 Client는 TCP연결이 되어 있다
Inmemory
- 성능 높이려 예전에
- 서버는 항상 DB와 연결
- DB가 직접 반응하게 했을 경우 DB 응답이 느려지면 게임이 느려지니까 이걸 해결하겠다고 중간에 memory를 둠
- inmemory 처리를 일부 하고 여유가 있으면 DB에 처리
- 잘못하면 초대형 사고
아이템 복제
1️⃣철수가 아이템을 들고 있다
- 철수 화면에서도 철수가 들고 있다
- 영희 화면에서도 철수가 들고 있다
2️⃣철수가 아이템을 내려놨다
- 철수 화면에서도 아이템이 바닥에 있다
- 영희 화면에서도 아이템이 바닥에 있다
3️⃣철수가 다시 집어 들었다
🚫이때 철수의 LAN 케이블 뽑아 연결이 끊겨 철수가 다시 아이템을 든 신호가 전달되지 않음
- 철수 화면에서는 철수가 들고 있다
- 영희 화면에서는 여전히 바닥에 있다
4️⃣(철수의 연결이 유지될 수 있는 시간 동안)그 사이 영희가 집어 들었다
5️⃣ 철수가 LAN 케이블을 다시 꽂았다
⭕ 철수의 TCP 연결은 유지
- 철수 화면에서 철수도 영희도 아이템을 들고 있다
- 영희 화면에서 철수도 영희도 아이템을 들고 있다
(❗아이템은 unique한 것)
네트워크 공부하는 사람들은 이 점을 잘 생각해볼 것
Network 충격에 대해 생각해보기
- 소켓으로 뭔가 할 때
- 물리적 수준의 L1, L2 수준의 충격에 대해서 윗단(L3, L4 ~)에서 어떻게 대응하게 할건지
- 성능을 잃지 않으면서도 그것이 대응 가능한지
HTTP는 Stateless
- 연결 개념이 없다
- 연결이 없기 때문에 자유롭거나 너무 쉽게 해킹되거나
- 지금은 보안 된 게 많다
출처: https://youtu.be/mP_C2QJEYts?si=deoSnSSSk3x0EfRf
'백엔드 > 네트워크' 카테고리의 다른 글
[네트워크기초이론]#32. L2 스위치와 ARP 작동원리 (1) | 2023.10.23 |
---|---|
[네트워크기초이론]#31. TCP/IP통신과 MAC주소의 변화 (0) | 2023.10.20 |
[네트워크기초이론]#26. TCP 연결이라는 착각에 대해 (0) | 2023.10.18 |
[네트워크기초이론]#24. Proxy의 활용 네 번째, Reverse Proxy (1) | 2023.10.17 |
[네트워크기초이론]#23. Proxy의 활용 세 번째, 감시와 보호 (0) | 2023.10.17 |