Computer Networking, a top down approach - Kurose, James F. Ross, Keith W.
README#
week06 {swjungle}{proxy-lab}의 일환으로 다시 펴게 된 책이다. 강의자료와 함께 잊어버린 기억과 놓친 내용들을 다시 복기하기 위해 문서를 만들었다. 일단 OSI 7 Layer부터 파악하고, 0121 CSAPP Third Edition Bryant, Randal E. O'Hallaron, David. 교재 11장에서 가르치지 않은 1~5번째 레이어에 대한 갈증을 해소하길 바란다.
DUMP#
1.5. Protocol Layers and Their Service Models#
네트워크는 복잡하다. 호스트에서 호스트로, 네트워크에서 네트워크로 데이터를 주고받기 위해 하드웨어서부터 소프트웨어까지 모든 기기와 소프트웨어들이 깊게 관여한다. 지구가 조금만 작았으면 모르겠는데, 지구는 생각보다 너무 크고 그 안에 담긴 사람들도 너무 다르다. 기업들은 다들 자기가 모든 기술을 선도하는 줄 알고 호환성을 고려하지 않은 기계와 소프트웨어들을 출시한다. 이렇게 복잡한 시스템을 개발하고 전 세계 사람들이 보편적으로 기술을 누리기 위해 다양한 기술들의 표준화, 추상화, 제약사항의 추가가 필요했다. 우리는 이번 챕터에서 추상화와 제약 사항의 추가를 레이어의 관점에서 바라볼 것이다.
사람들은 사물이나 현상을 있는 그대로 보지 않고 기억하기 쉬운 속성이나 기능 따위로 이해하려고 하는 습성을 가지고 있다. 그렇게 보는 편이 식별하기에도 편하고 기억해야 할 양이 줄어들기 때문이기도 하다. 네트워크와 인터넷을 구현할 때에도 사람들은 하드웨어부터 소프트웨어까지 이르는 수준들을 공통적인 속성들을 따라 묶고 수직적인 구조를 그리게 되었고, 그것을 부르는 이름이 '레이어'가 되었다. 한 레이어에서 일어난 수정사항은 시스템 자체가 변하지 않는 한 다른 레이어로 전파하지 않게 되었다.
송신과 수신 두 가지 측면에 있어 복잡한 시스템인 네트워크에서 사람들은 데이터의 전달과정이 대칭적인 구조를 가지고 있음을 발견하게 되었다. 이는 일종의 말굽모양 다이어그램으로 많이 나타내게 되는데, 수평선을 그었을 때 같은 높이에 있는 레이어는 같은 컴포넌트에 속하는 경우를 의미한다. 다만 순서가 반대이므로 (데이터에 헤더를 붙여 하위 컴포넌트로 보내는 쪽과 헤더를 벗겨 상위 컴포넌트로 보내는 쪽) 유스케이스는 다른 경우에 속하겠다.
drawbacks of layering
- 기능의 중복: 한 레이어에서 필요한 기능이 하위 레이어에서만 있어야 하는데, 다른 레이어에서도 그 기능을 필요로 하는 경우
- 데이터의 중복: 한 레이어에서 필요한 데이터가 하위 레이어가 아닌 다른 레이어가 가지고 있는 경우, 그만큼 불필요한 데이터 복제가 일어난다.
Protocol Stacks ( ≠ OSI 7 Layers ) in Five layers#
Application Layer
FTP, SSH, SMTP, HTTP 등 다양한 응용 프로그램들에서 페이로드 (보내고 받으려고 하는 핵심 데이터)를 생산하거나 소비하는 주체. 해당 레이어에서 다루는 패킷을 Message라고 부른다.
Transport Layer
TCP와 UDP가 가장 대표적이다. 데이터 세그먼트를 구체적인 호스트 내 프로세스로 연결짓는 책임을 가지고 있다. 메시지를 신뢰도 있게 전송/수신하도록 connection으로 관리하는 프로토콜을 TCP, connection 없이 빠르게 도착하기만 하면 장땡인 UDP로 나뉜다. 해당 레이어에서 다루는 패킷은 Segment이다.
포트번호 (1~65535)를 사용하여 두 프로세스 간에 연결을 보장한다.
- 더 알아볼 키워드
- TCP
- Establish connection (Three way handshaking)
- Close connection
- Segment 분리 및 조립과정
- TCP
Network Layer
LAN을 벗어난 통신을 위한 레이어이다. IP(Internet Protocol)이 이 레이어를 담당하는 유일한 프로토콜이다. 이 레이어에서는 패킷을 datagram으로 보는데, 모든 데이터그램에는 source host와 destination host에 대한 정보가 들어있다.
라우팅 프로토콜을 사용해 데이터그램을 효율적으로 전달하기 위한 최적 경로를 계산한다.
데이터그램 안에는 MAC 주소 정보가 없다. 그 대신에 목적지 네트워크에게 "이 IP 가지고 있는 기기의 MAC 주소를 알려주세요" 라는 브로드캐스트를 보내게 된다.
- 더 알아볼 키워드들
- IP의 여러 class들
- IGMP(Internet Group Management Protocol)과 브로드캐스트, 유니캐스트, 멀티캐스트
- ICMP(Internet Control Message Protocol)과 PING
- 라우팅 테이블
- 정적 라우팅 VS 동적 라우팅
- IPv4의 부족한 대역을 극복하기 위한 사설 네트워크
- DHCP(Dynamic Host Configuration Protocol)
Link Layer
네트워크 레이어는 두 호스트의 주소만을 담당했다면, 링크 레이어에선 호스트 사이의 경로를 담당한다. 모든 호스트가 직접 연결되어있더라면 좋았겠지만 세상은 그렇게 녹록치 않다. 여러 라우터들이 수많은 데이터그램들을 중개하는데, 다양한 링크 레이어 프로토콜을 사용해 신뢰도 있는 라우터 간 연결을 보장한다. 링크 레이어 패킷을 frame으로 부른다. 대표적으로 이더넷, 와이파이가 있다.
TCP의 신뢰성과는 다른게, 링크 레이어에서는 전기신호 자체의 노이즈를 극복하는 데에 초점을 맞춘다. 트레일러에 오류검출을 위한 비트를 추가하여 이전 링크에서 보낸 신호가 올바른지 판단한다.
MAC(Media Address Control) 주소를 활용하여 링크 간 네트워크 인터페이스들을 식별한다. MAC 주소의 앞쪽 6개의 16진수는 vendor를, 뒤쪽 6개의 16진수는 식별자를 의미한다.
[!question]- 그러면 한 회사당 \(16^6=16777216\) 밖에 사용하지 못하는 거 아니냐?
애플같이 억단위의 전자기기를 만들어 파는 회사는 벤더를 여러개 갖추는 경우가 있지 않을까?
- Bridge
- 랜과 랜을 연결하는 초기 네트워크 장치. 네트워크와 네트워크 사이에서 데이터를 복사하는 역할을 맡는다.
- [?] 않이, 랜과 랜을 연결한다고? 그러면 네트워크 레이어 아니냐?
- Switch
- Hub의 단점인 높은 Collision을 막기 위해 링크 레이어의 특징인 MAC 주소를 사용한다. 구체적인 라우터로만 프레임을 보낸다.
- MAC 주소 테이블을 가지고 있어 구체적으로 어느 포트 (≠ 네트워크 레이어의 포트)로 보내야 하는지 알고있음. 네이버 블로그 참고
Physical Layer
물리적으로 비트들의 집합인 frame을 링크 간에 전송하기 위한 구체적인 프로토콜을 명시한다. 대표적으로 구리선, 동축케이블, 유리섬유와 같이 전기적 신호로 변환된 비트열을 어떤 방식으로든 다음 링크로 전달하기만 하면 된다.
- Repeater
- 케이블의 길이가 늘어남에 따라 줄어드는 전기신호를 증폭
- Hub
- 하나의 링크에서 발생한 패킷을 연결된 모든 링크에 전달함. → Collision이 자주 일어남.