생각해보기
네트워크와 처리 흐름 본문
커널은 TCP, IP, 이더넷을 담당하는 기능이 필요한 정보를 데이터에 부여해서 NIC에 전달한다
최종적으로 NIC(Network interface controller)가 데이터를 전송한다
애플리케이션 계층은 필요한 데이터를 소켓에 기록하고 소켓 이하는 커널 공간에서 처리한다
TCP 처리 흐름
커널에 전달된 데이터는 소켓 버퍼라는 메모리 영역에서 처리
애플리케이션 데이터를 TCP 세그먼트로 나눈다. 최대 크기는 MSS, MSS 초과한 데이터는 자동적으로 분할돼서 복수의 TCP 세그먼트가 생성된다. TCP 세그먼트는 TCP헤더가 있고 TCP헤더는 TCP 기능에 필요한 정보가 들어있다
TCP는 ACK를 사용해서 데이터의 순서와 전달을 보증한다. TCP는 흐름제어와 혼잡 제어를 한다.
IP 처리 흐름
IP 정보가 담긴 IP헤더를 TCP 세그먼트에 추가해 IP 패킷을 만든다
IP 영역에서는 최종 목적지 서버까지 복수의 네트워크를 경유해서 데이터를 전송한다. 이때 사용되는 것은 IP 주소이다. IP 주소는 32 비트로 표현된다. 주소는 네트워크부와 호스트 부로 나뉜다. 네트워크부는 어떤 네트워크 인지를 가리키고 호스트부는 해당 네트워크 내에 있는 소유자를 가리킨다. 서브넷 마스크나 CIDR로 표현한다.
IP 주소중 호스트부의 비트가 모두 0인것 네트워크 주소, 모두 1인 것은 브로드캐스트 주소이다. 이 주소는 호스트에 할당해서는 안 되는 특별한 주소이다.
IP 주소를 보고 같은 네트워크 상이 아닌 다른 네트워크일 경우 목적지를 알고 있는 라우터에게 전송을 부탁한다.
외부와 접속하는 네트워크는 기본 게이트웨이라는 라우터가 설치되어있다.
라우터는 라우팅 테이블 기반으로 패킷을 전송하기 때문에 라우팅 테이블에 오류가 있을 경우 패킷이 계속 순환할 수 있다. 따라서 TTL이라는 생존 시간 정보를 가지고 있으며 라우터를 경유할 때마다 TTL이 감소하고 TTL이 0이 될 경우 패킷을 파기한다
이더넷 처리 흐름
동일 네트워크 내의 네트우크 장비까지 전달받은 데이터를 운반한다. 즉 IP주소는 여러 네트워크를 거쳐 데이터를 전송할 수 있었지만 이더넷은 동일 네트워크에서만 데이터를 전송할 수 있다. 이때 사용되는 주소가 MAC 주소이다.
MAC 주소는 컴퓨터간 데이터를 전송하기 위해 있는 컴퓨터의 물리적인 주소이다. MAC 주소는 네트워크 카드마다 붙는 고유 식별 주소이다.
우리는 IP주소와 MAC 주소를 알고 있어야 통신할 수 있다.
MAC주소는 IP를 알고 있는 상태에서 MAC 주소를 알아내는 ARP 프로토콜을 이용하여 알 수 있다.
같은 망일 경우
---
같은 네트워크에 있는 PC들에게 브로드 캐스트 한다. 이후 브로드 캐스트 받은 PC 중 적합한 PC가 브로드 캐스트에 대한 응답을 한다.
다른 망일 경우
---
자신의 PC에 설정된 서브넷 정보와 목적지 IP 주소를 비교해서 동일 네트워크인지 다른 네트워크인지 판단한다.
이후 다른 네트워크 일 경우 PC에 설정된 Default Gateway 주소를 확인하고 브로드 캐스트 한다. 브로드 캐스트 받은 Default Gateway는 브로드 캐스트에 대한 응답을 한다
이와 같은 ARP 과정을 매번 일어나는 경우 망에 부담을 주므로 ARP table을 사용한다. ARP table에 미리 IP와 MAC 주소를 적어놓는다. ARP table에 없으면 ARP 과정을 하게 된다
일반적으로 이더넷에 크기는 최대 크기(MTU)는 1500 바이트로 설정되어 있다. MTU는 IP헤더, TCP헤더, TCP 세그먼트의 최대 크기(MSS)이다.
* 네트워크를 효율적으로 나누기 위해서 VLAN 통해 가상으로 네트워크를 나눌 수 있다
* L2 스위치는 MAC address table 기반으로 적절한 포트 포워딩한다. 만약 테이블에서 목적 mac 주소 mapping 정보가 없다면 살아있는 포트에다가 flooding 한다.
'IT인프라' 카테고리의 다른 글
인프라와 병목현상 (0) | 2021.10.31 |
---|---|
인프라 구조에 대해 알아보자 (0) | 2021.10.30 |
인프라 응용 이론에 대해 알아보자 (0) | 2021.10.25 |
인프라에 앞선 기본 이론 (0) | 2021.10.22 |
3계층형 시스템을 살펴보자 (0) | 2021.10.21 |