네트워크 기본
OSI 7 layer와 식별자
- L2의 식별자는 MAC Adress를 사용하며 48bit를 보통 16진수로 표현
- L3의 식별자는 IP Address를 사용하며 32bit를 10진수(8bit)씩 끊어서 사용
- L4의 식별자는 Port 번호를 사용하며 16bit 양의 정수를 사용
Host
- 컴퓨터 공학에서 컴퓨터가 네트워크에 연결되는 순간 이를 Host라고 한다.
Switch가 하는 일과 비용
- 네트워크(고속도로)에서 어떤 명령이 전송될 때 여러개의 스위치(교차로)를 만난다.
- 명령은 특정 경로(인터페이스)를 선택(스위칭)한다.
- 이 선택의 근거가 IP이면 L3스위치, Port이면 L4 스위치이다.
L2 수준
NIC, L2 Frame, LAN 카드 그리고 MAC 주소
- NIC(Network Interface Card)는 흔히 LAN(Local Area Network) 카드이다.
- 유무선 NIC이 있지만 굳이 구별하지 않고 NIC으로 사용하는 경우가 많다.
- NIC은 H/W이며 MAC Adress를 갖는다.
- L2 수준에서의 데이터 유통 단위는 Frame이다.
L2 스위치에 대해서
- L2 스위치는 MAC Address를 근거로 스위칭한다.
- 도식에서 녹색이면 제대로 연결이 되었다는 뜻이다 (Link-up)
- 도식에서 주황색이면 제대로 연결이 되지 않았다는 뜻이다 (Link-down)
- L2 스위치를 위한 스위치가 있는데 그것을 L2 Distribution Switch라고 한다.
- L2 Distribution Swtich는 일반적으로 VLAN(Virtual Local Area Netowkr)를 지원한다.
- VLAN: 하나의 물리적 네트워크를 논리적으로 여러 개의 네트워크로 나누어 서로 다른 네트워크처럼 동작하게 하는 기술.
LAN과 WAN의 경계 그리고 Broadcast
- Boradcast 주소라는 특별한 주소가 존재한다.
- IP: 255.255.255.255로 표시되며, 이는 네트워크 상의 모든 호스트에게 데이터를 전송할 때 사용다.
- MAC: FF:FF:FF:FF:FF:FF입니다. 이 주소는 이더넷 프레임이 네트워크의 모든 노드에 전달되도록 한다.
- 팁: OSI 7 계층으로 분류했을 때 S/W는 논리적, H/W는 물리적라고 이해해도 무방하다. S/W에서 논리적이라고 하는것을 컴퓨터 공학에서는 주로 Virtual 이라는 말로 많이 쓰고 도식화 했을 때 구름 형태로 많이 표현한다. (즉 물리적인 실체가 없다)
- 소프트웨어로 하드웨어를 구현하는 것이 가능하다.
- 컴퓨터 공학에서 CPU를 Machine이라고 하는데, 소프트웨어로 CPU를 구현한 것이 바로 우리가 흔히 아는 Virtual Machine이다.
- 소프트웨어로 하드웨어를 구현하는 것이 가능하다.
- 완전히 옳은 표현은 아니지만 LAN은 주로 물리적으로 설명되는 것이 LAN이며 소프트웨어 적으로 표현하는 것이 WAN이다.
- 가령 인터넷은 WAN이므로 논리적인 네트워크이다. (즉 3계층 무조건 논리 네트워크이다)
- LAN은 랜 케이블이 꽂혔는가, 무선 신호가 도달했냐 등
L3 수준
IPv4주소의 기본 구조
- 짚고가는 OSI7 계층 구조
- HTTL
- -
- TLS(SSL)
- L4 = TCP, UDP
- L3 = IP
- IPv4 (32bit = 8bit * 4)
- 8bit는 2^8개의 경우의 수다
- 0~255까지 표현 가능하고 255(이진수로 1111 1111)은 boradcast의 주소다.
- 앞에 3개 8bit는 Network ID(서울시 관악구 신림동), 뒤에 1개 8Bit는 Host ID(주소)
- IPv4 (32bit = 8bit * 4)
- L2 = Ethernet
- Mac Address는 48비트라고 했다.
L3 IP Packet으로 외워라
- Packet이라는 말은 L3 IP Packet으로 외워라
- Packet은 Header와 Payload로 나뉘며 이는 상대적인 분류이다.
- Header에서 가장 중요한 것은 Src(출발지) -> Dst(목적지)이다.
- MTU(Maximum Transmission Unit)는 옵션 설정을 하지 않았다는 전제하에 1500bytes이다.
- WireShark라는 아주 유명한 네트워크 감청 프로그램이 있다.
Encapsulation와 Decapsulation
- L2 Frame의 Padyload안에 L3 Packet이있다.
- L3 Packet 안에는 당연히 Segment가 있다.
- 이렇게 데이터를 차곡차곡 구조화 하고, 그걸 다시 역구조화 하는것이 Encapsulation과 Decapsulation이다.
패킷의 생성과 전달
- 비유적으로 보는 전체적인 양상
- A 프로세스(철수)가 데이터(택배)를 B 프로세스(영희)에 송신한다.
- 데이터를 패킷화(택배 상자) 하여 송장(Header, Src, Dst)을 붙여 넣어서 GateWay(택배 기사)에 발송한다. 이떄 GateWay는 Routing한다.
- 라우팅 할때는 Host(영희 집)까지 간다.
- Header에서 Port 번호를 보고 식별한다.
- OSI 7계층으로 보는 양상
- User Mode에서 데이터를 Kernal로 보내기 위해서 Socket으로 Write한다. (네트워크이므로 send)
- 소켓의 본질은 File이며 User Mode Application이 Kernal Mode에 접근하도록 TCP/IP를 추상화한 Interface이다.
- 계층을 내려갈수록 Header가 붙는다.
- Data
- TCP(Header)+Data(Payload)
- IP(Header)+TCP&&Data(Payload)
- Frame(Header)+IP&TCP&&Data(Payload)
- Data
- L2 Access Switch를 만난다.
- 타고 가면 Router GateWay가 나온다.
- Internet으로 타고 나간다.
- User Mode에서 데이터를 Kernal로 보내기 위해서 Socket으로 Write한다. (네트워크이므로 send)
계층별 데이터 단위
- User Mode Application에서 TCP를 추상화한 Interface = Socket, 여기서의 데이터 단위: Stream
- 본질은 File, 버퍼를 둔다.
- Segment화 될 때 분할이 일어난다.
- L4에서의 데이터 단위: Segment (Segment를 패킷이라 부르는 사람도 있다.)
- Segment 데이터 최대 용량: MSS(Maximum Segment Size): 보통 1460 bytes
- L3에서의 데이터 단위: Packet
- Packet 데이터 최대 용량: MTU(Maximum Transmission Unit): 보통 1500Byte
- UDP에서는 DataGram
- Packet 데이터 최대 용량: MTU(Maximum Transmission Unit): 보통 1500Byte
- L1~L2에서의 데이터 단위: Frame
TCP/IP 송·수신구조
- Naver에서 File 하나를 다운 받았다고 가정하자.
- OSI 7계층으로 보는 송수신 과정
- 애플리케이션 계층 (L7)
- 웹 브라우저에서 네이버 서버에 파일 다운로드 요청을 한다.
- HTTP 프로토콜을 사용하여 요청을 보낸다.
- 프레젠테이션 계층 (L6)
- 데이터 형식을 변환하거나 암호화, 압축한다.
- 웹 브라우저에서 받은 데이터를 전송하기 적합한 형태로 변환한다.
- 세션 계층 (L5) 통신 세션을 설정하고 관리한다.
- 네이버 서버와의 세션을 설정하여 데이터 전송을 준비한다.
- 전송 계층 (L4)
- TCP 프로토콜을 사용하여 데이터를 세그먼트로 나눈다.
- 각 세그먼트에 순서 번호를 붙여 전송하고, 수신 확인(ACK)을 받는다.
- 소켓 버퍼에 데이터를 저장하고 스트림을 세그먼트로 분해한다.
- 네트워크 계층 (L3) 세그먼트를 패킷으로 캡슐화한다.
- 각 패킷에 IP 헤더를 추가하여 라우팅 정보를 담는다.
- 패킷을 목적지 IP 주소로 라우팅한다.
- 데이터 링크 계층 (L2) 패킷을 프레임으로 캡슐화한다.
- 각 프레임에 MAC 주소와 같은 링크 계층 정보를 추가한다.
- 프레임을 물리적으로 전송한다.
- 물리 계층 (L1)
- 실제 전송 매체를 통해 비트 스트림을 전송한다.
- 케이블, 무선 등을 통해 데이터를 전송한다.
- 이 과정에서 MTU(Maximum Transmission Unit)가 1500바이트인 경우, 파일을 전송하기 위해 최소 1000개의 패킷으로 쪼개야 한다.
- 데이터 흐름으로 보는 송수신 과정
- 데이터 흐름 PC (Process)
- 파일 다운로드 요청을 한다.
- 2차 메모리(HDD, SSD)에서 1차 메모리(램)로 파일을 복사한다.
- 1차 메모리에서 소켓 버퍼로 데이터를 복사한다. 소켓 버퍼에서 데이터를 스트림 형태로 L4로 보낸다. 전송 계층 (L4) 소켓 스트림을 세그먼트로 분해하여 순서 번호를 붙인다.
- 세그먼트를 L3로 보낸다.
- 세그먼트를 패킷으로 캡슐화하고 IP 헤더를 추가한다.
- 패킷을 라우터로 보낸다.
- 패킷을 프레임으로 캡슐화하고 MAC 주소를 추가한다.
- 프레임을 물리적 매체로 전송한다.
- 역캡슐화 서버에서 클라이언트로 데이터가 도착하면 역순으로 캡슐화를 해제한다.
- L2 -> L3 -> L4 -> L7 순서로 데이터가 상위 계층으로 올라간다.
- 각 계층에서 헤더를 제거하고, 원래의 데이터 스트림을 복원한다. 최종적으로 애플리케이션 계층에서 데이터를 처리하고 파일을 저장한다.
- 그외 개념
- TCP의 데이터 전송 관리
- TCP는 데이터 전송 시 여유 공간(Window Size)을 따진다.
- 네트워크 장애 종류
- Lost(유실), Retransmission(재전송), Out of Order(순서 불일치) 등
- Zero Window는 여유 공간이 없음을 나타내며, 데이터 전송이 일시 중지될 수 있다.
- TCP의 데이터 전송 관리
IP 헤더 형식
서브넷 마스크와 CIDR
Broadcast IP주소
Host 자신을 가리키는 IP주소
TTL과 단편화
인터넷 설정 자동화를 위한 DHCP
ARP
Ping과 RTT
TCP와 UDP
TCP와 UDP 개요
TCP 연결과정
TCP 연결종료 및 상태변화
TCP, UDP 헤더형식과 게임서버 특징
TCP '연결'이라는 착각
TCP 연결과 게임버그
웹 핵심기술
DNS
웹 기술 창시자와 대한민국 인터넷
URL과 URI
HTTP
웹 서비스 구조 기본이론
WAS와 RESTful API 그리고 JVM
참고
해당 글은 외워서 끝내는 네트워크 핵심이론 - 기초 강의를 수강한 후 체화 하기 위해 별도로 정리한 글입니다.