"IT엔지니어를 위한 네트워크 입문" 책을 바탕으로 정리함.
-네트워크 규정이나 규약을 말함.
-TCP/IP 는 별도 계층에서 동작하는 프로토콜이지만 함께 사용하고 있어, 이런 프로토콜 묶음을 프로토콜 스택이라고 부름.
1-4계층: 데이터 플로 계층 / 하위계층 → 데이터를 상대방에게 잘 전달하는 역할.
5-7계층: 애플리케이션 계층 / 상위계층 → 애플리케이션 개발자들이 고려해야 할 영역.
1계층 물리계층
-주로 전기 신호 전달하는데 초점이 맞추어짐.
-주요 장비는 허브, 리피터(네트워크 통신 중재), 케이블, 커넥터(케이블), 트랜시버(컴퓨터의 랜 카드와 케이블 연결), 탭(네트워크 모니터링과 패킷 분석을 위해 전기 신호를 다른 장비로 복제해줌)
-전기 신호가 1계층 장비에 들어오면 전기 신호를 재생성하여 내보냄. 주소의 개념이 없어 전기 신호가 들어온 포트를 제외하고 모든 포트에 전기 신호 전부 전송.
2계층 데이터 링크 계층
-1계층에서 들어온 전기 신호를 모아서 우리가 알아볼 수 있는 데이터 형태로 처리.
-1계층과는 다르게 주소 정보 정의하고 정확한 주소로 통신하도록 함.(보내도록 함)
-출발지와 도착지 주소를 확인하고 내게 보낸 것이 맞는지, 내가 처리해야 하는지에 대해 검사한 후 데이터 처리 수행.
-전기 신호를 모아 데이터 형태로 처리하므로 데이터에 대한 에러 탐지, 고치는 역할 수행 가능.
-주소 체계가 있다는 것은 한 명과 통신하는 것이 아니라 동시에 여러명과 통신이 가능하다는 뜻이므로 받는 사람이 현재 데이터를 받을 수 있는지 확인하는 작업부터 함. 플로우 컨트롤이라 함.
-MAC 주소 체계가 있음.
NIC
-컴퓨터를 네트워크에 연결하기 위한 하드웨어 장치
-Network Card 네트워크 카드 = 랜 카드 = 이더넷 카드 = 네트워크 어댑터
-동작 방식
1) 전기신호를 데이터 형태로 만듦
2) 목적지 MAC 주소와 출발지 MAC 주소 확인
3) 네트워크 인터페이스 카드의 MAC 주소 확인
4) 목적지 MAC 주소와 네트워크 인터페이스 카드가 갖고 있는 MAC 주소가 맞으면 데이터를 처리(상위 계층에서 처리할 수 있도록 메모리에 적재)하고 다르면 데이터 폐기.
스위치
-스위치는 단말이 어떤 MAC 주소인지, 연결된 포트는 무엇인지 주소 습득 과정에서 알 수 있음. 이 주소 테이블을 기반으로 정확한 포트로 포워딩 해줌.
cf) 허브 - 한 포트에서 전기 신호가 들어오면 전체 포트로 전기 신호 전달하다보니 전체 네트워크에서 동시에 하나의 장비만 데이터를 보낼 수 있음.
→ 스위치의 필터링&포워딩 기능으로 통신이 필요한 포트만 사용하고 네트워크 전체에 불필요한 처리가 감소하면서 이더넷 네트워크 효율성 크게 향상.
3계층 네트워크 계층
-IP 주소과 같은 논리적인 주소가 정의됨.
-데이터 통신에서는 2계층의 물리적 MAC 주소와 3계층의 논리적인 IP 주소가 사용됨.
-IP 주소는 네트워크 주소 부분(장비나 단말은 자신이 속한 네트워크와 원격지 구분)과 호스트 주소 부분으로 나뉨.
라우터
-3계층 동작 장비로 IP 주소를 이해할 수 있음.
-라우터는 IP 주소를 사용해 최적의 경로를 찾아주고, 해당 경로로 패킷을 전송하는 역할을 함.
4계층 트랜스포트 계층
-하위 계층 1,2,3계층은 신호와 데이터를 올바른 위치로 보내고 실제 신호를 잘 만들어지도록 하는데 집중하지만 4계층은 실제로 해당 데이터들이 정상적으로 잘 보내지도록 확인하는 역할.
-데이터를 분할해 패킷에 실어 보내다 보니 중간에 패킷이 유실되거나 순서가 바뀌는 경우가 생기는데 이 때 바로 잡아주는 역할을 4계층에서 담당.
-패킷을 분할할 때 패켓 헤더에 보내는 순서(시퀀스 번호)와 받는 순서(ACK 번호)를 적어 통신하므로 패킷이 유실되면 재전송을 요청할 수 있고 순서가 뒤바뀌더라도 바로잡을 수 있음.
-장치 내의 많은 애플리케이션을 구분할 수 있도록 포트 번호를 사용해 상위 애플리케이션 구분.
-4계층 동작 장비로는 로드 밸런서와 방화벽이 있음.
5계층 세션 계층
-양 끝단의 응용 프로세스가 연결을 성립하도록 도와주고 연결이 안정적으로 유지되도록 관리하고 작업 완료 후에는 이 연결을 끊는 역할. "세션 관리"
-TCP/IP 세션을 만들고 없앰.
-에러로 중단된 통신에 대한 에러 복구와 재전송 수행.
6계층 프레젠테이션 계층
-표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕기 위해 하나의 통일된 구문 형식으로 변환시키는 기능 수행. 번역기나 변환기 역할 수행.
-응용 계층에서 데이터의 형식상 차이를 다루는 부담을 덜어줌.
-MIME 인코딩, 암호화, 압축, 코드 변환과 같은 동작.
7계층 애플리케이션 계층
-애플리케이션 프로세스를 정의하고 애플리케이션 서비스를 수행.
-네트워크 소프트웨어의 UI부분이나 사용자 입출력 부분을 정의하는 것이 애플리케이션 계층의 역할.
-프로토콜 종류는 FTP, SMTP, HTTP, TELNET 등이 있음.
-현대 네트워크는 대부분 TCP/IP와 이더넷으로 이루어짐.
-7계층이 아닌 4계층으로 구분. 상위 3개 계층을 하나의 애플리케이션 계층으로 묶고 1, 2계층 즉 물리 계층과 데이터 링크 계층을 하나로 네트워크 계층으로 구분.
-상위계층에서 하위계층으로 데이터를 보내면, 물리 계층에서 전기 신호 형태로 네트워크를 통해 신호를 보냄. 받는 쪽에서는 다시 하위 계층에서 상위 계층으로 데이터를 보냄.
데이터가 상위 계층에서 데이터 플로 계층으로 패킷 형태로 하나씩 인캡슐레이션 되면서 내려오고 랜 카드에서 전기 신호로 변환되어 목적지로 전달됨. 이 전기 신호를 받은 목적지에서는 데이터 형태로 변환되어 목적지로 전달됨. 전기 신호를 받은 목적지에서는 데이터 형태로 변환해서 상위 계층으로 올려주고 패킷들을 조합해 데이터 형태를 만들게 됨.
인캡슐레이션
-애플리케이션에서 데이터를 데이터 플로 계층(1-4계층)으로 내려보내면서 패킷에 데이터를 넣을 수 있도록 분할하는데 이 과정이 인캡슐레이션.
-적절한 크기로 데이터를 쪼개고 4계층부터 네트워크 전송을 위한 정보를 헤더에 붙여 넣음. 4계층에서 헤더 추가해서 3계층으로 내려보내면, 3계층에서 필요한 헤더 정보 추가하고 2계층으로 내려보내면 2계층에 필요한 헤더 정보를 추가한 후 전기 신호로 변환해 수신자에게 전송.
디캡슐레이션
-받는 쪽에서는 디캡슐레이션.
-받은 전기 신호를 데이터 형태로 만들어 2계층으로 올려 보냄.
-2계층에서는 송신자가 작성한 2계층 헤더에 포함된 정보를 확인하고 목적지가 자신이 아니면 버리고(랜 카드가 담당) 목적지가 자신이 맞다면 3계층으로 이 정보를 보냄. 이 때 2계층의 헤더 정보는 더 이상 필요 없으므로 버리고 올려보냄.
-이 데이터를 받은 3계층은 2계층이 동작했던 것처럼 상대방이 적은 3계층의 헤더 정보를 확인해 자신에게 온 것이 맞는지 확인하고 맞으면 3계층 헤더 정보 제거하고 4계층으로 올려보냄.
-4계층도 마찬가지로 3계층 같은 과정을 거쳐 데이터를 애플리케이션에 올려보냄.
헤더
-헤더에는 반드시 두 가지 정보 포함.
1) 현재 계층에서 정의하는 정보
2) 상위 프로토콜 지시자(3계층은 프로토콜 번호, 4계층은 포트번호, 2계층은 이더 타입) → 프로토콜 지시자가 있어야 디캡슐레이션 과정에서 어떤 상위 프로토콜로 올려보내 주어야 할지 결정할 수 있음.
MSS&MTU
-애플리케이션에서 데이터를 만들어 보낼 때 데이터 플로 계층에서 네트워크 상황에 맞게 데이터를 잘 쪼개 상대방에게 전달.
-네트워크에서 수용할 수 있는 크기를 역산정해 데이터가 4계층에서 내려올 때 적절한 크기로 쪼개질 수 있도록 유도하는데 이 값을 MSS라고 함.(4계층의 최대 데이터 값, IP, TCP 헤더의 표준 헤더 크기인 20바이트를 제외하면 1460바이트).
-네트워크에서 한 번에 보낼 수 있는 데이터의 크기를 MTU라고 함. 일반적으로 이더넷에서 수용할 수 있는 크기는 1500바이트.(2계층의 헤더 제외한 데이터 크기).