- IPv4 : 32Bit = 8Bit * 4 (xxx.xxx.xxx.xxx)
- IPv6 : 128Bit = 16Bit * 8 (xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx)
- 순수하게 인간을 위한 시스템
- 응용계층(인터넷 5계층)에서만 관여
- Domain Name을 IP 주소로 바꿔주는 서비스
- Aliasing 관리
- 전 우주적으로 중앙관리
- 분산관리(계층적 분산관리)
- DNS의 계층
- Root Name Server
- Top-Level Domain Name Server 관리
- Top-Level Domain Name Server의 IP를 반환(유효기간과 함께)
- 유효기간 동안은 동일한 Top-Level Domain Name Server IP 요청 X
- Top Level Domain Name Server(ex. .kr, .com, .org, .net)
- Authorized Domain Name Server(ex. kau.ac.kr)
- Local Domain Name Server
- Root Name Server
- DNS의 동작 방식
- Recursive Domain Name Resolution
- Iterative
- 서버 없이 단말(Peer)들끼리 직접 상호간 서비스를 제공하는 시스템(물물교환)
- 서비스 보장 X
- Peer들은 IP를 바꾸며 옮겨다닐 수 있음
- Hybrid P2P
- 서비스 메타 정보는 서버가 관리
- 실제적 서비스는 Peer 끼리
- Skype, Starcraft
- Pure P2P
- 문제점
- Peer가 없다
- 신뢰 X - 해쉬코드
- 이기적
- 조각들의 쏠림현상
- Torrent, Bitcoin
- 문제점
-
현실 네트워크의 문제
- 무한한 흐름 X
- 패킷 유실
- 패킷 순서 바뀜
- 패킷 변조
-
통신 오류 케이스
- 패킷이 가는 과정에서 유실되는 경우
- ACK가 돌아오는과정에서 유실되는 경우
- 걸린 총 시간보다 타임아웃이 일찍 걸리는 경우
- 연속된 대량의 작업이 순차성을 갖고 있으나 앞의 일이 종료하지 않고도 다음 일을 시작할 수 있는 병렬성을 가진 경우 성능 향상 기법
- 최대 N개의 패킷을 병렬적으로 처리
- 송신측에서는 N개의 패킷을 Buffering
- Buffering의 의미 : 수신이 확실하지 않은 패킷에 대하여 재전송을 위하여 보관
- 수신측에서는 순차적으로 잘 수신된 패킷에 대히여 ACK를 송신하고 패킷의 Payload를 응용계층으로 올려보냄
- 송신측에서는 Buffer에 여유가 생기면(ACK를 받아서) 그만큼 추가로 Pipelining
- 수신측에서 순서에 맞지 않는(이빨이 빠진) 패킷이 온 경우 반응 2가지 옵션
- 조용히 있음
- 잘 받은 마지막 패킷에 대한 ACK를 전송
- Go-Back-N에서의 재전송 정책
- 각 패킷 전송 시에 패킷을 위한 타이머를 설정
- ACK를 받으면 ACK 해당 패킷과 앞쪽 패킷에 대한 타이머 소멸
- 타이머 이벤트 발생 시 해당 패킷부터 재전송
- 추가 전송 정책 : K번째 패킷에 대한 ACK이 반복적으로 올 경우 K+1번째 패킷의 유실을 함축
- 장점
- 단순함(특히 수신측에서)
- 간명하게 시스템의 상태가 추상화
- 단점
- 패킷 유실에 대한 복구비용이 많이듦
- Go-Back-N의 단점 보완
- 수신측에 버퍼를 둠
- 빠진 패킷이 있을 경우 그 뒤 쪽의 잘 도착한 패킷들은 버퍼에 보관
- 빠진 패킷이 추후 도착하면 버퍼에 저장한 이후 패킷들까지 순차적으로 응용에 전달
- 장점
- 실패한 패킷만 재전송(성능UP)
- 단점
- 시스템 추상화 복잡
- 수신측에도 버퍼가 필요