학교에서 네트워크 수업을 수강하고 있는데, 네트워크를 이해하기 위해서는 네트워크 계층에 대해서 확실히 알고 있어야 한다. 그래서 한번 쭉 정리를 해보려고 한다.
네트워크 계층은 OSI 7 Layer
와 TCP/IP의 4 Layer
가 있다. 두 가지 다 이해해야 하는데, 그러기 위해서 먼저 용어들을 알아보자.
노드(Node) : 컴퓨터 네트워크 상에 연결된 장치.
호스트(Host) : 고유 IP 주소를 가진 노드
홉(Hop) : 한 노드에서 다음 노드간 거리의 단위.
프로토콜(Protocol) : 데이터 통신의 규약. 약자 끝에 P붙은 애들은 거의 다 프로토콜이라고 생각하면 된다.
라우팅(Routing) : 어떤 네트워크 안에서 통신 데이터를 보낼 때 최적의 경로를 선택하는 과정.
라우터(Router) : 패킷의 위치를 추출하여, 그 위치에 대한 최적의 경로를 지정하며, 이 경로를 따라 데이터 패킷을 다음 장치로 전향시키는 장치.
계층별로 업무 분담을 해 일처리를 한다고 생각하면 된다. 내가 참고하는 블로그에서 찰떡 같은 예시를 들었는데, 예를 들면 홍익대학교 주소
서울시 마포구 와우산로 94로 우편물을 보내는 상황이라고 생각해보자.
전국에서 서울시 주소 (MAC addr)를 찾고 - Data Link Layer
마포구 주소(IP Addr)를 찾아 - Network Layer
월드컵로(Port)를 찾은 뒤
10길(Socket)에 도착하여 : Transport Layer
메일을 전달한다 : Application Layer
수업에서는 아래서부터 살펴보고, 구글링 할 때는 위에서부터 살펴보던데, 나는 아래서부터 살펴 볼 것이다.
노드로 비트를 보내는 역할을 한다.
비트 단위로 데이터 전송을 하며, 대표적인 장비는 통신 케이블, 리피터, 허브 가 있다.
데이터의 물리적 이동은 물리 계층에서만 일어난다.
전송될 패킷의 모든 경로를 아는 것(Circuit-switching)이 아닌 패킷 단위로 그때 그때의 목적지를 찾아가는 (Packet-switching) 방식이다.
노드에는 IP주소와 Routing Table이 있다.
네트워크 레이어에서는 IP datagram을 주고 받는데, IP datagram의 Header에는 송신자, 목적지 주소가 있다. 목적지 주소와 Routing Table을 보고 길을 찾아 패킷을 Host-to-Host Delivery
나 Hop-by-Hop Delivery
를 이용하여 전송 한다.
전송 단위는 UDP 일 경우엔 user datagram
, TCP 일 때는 segment
단위로 전송한다.
네트워크가 아닌 호스트 내에 구동된 프로세스 사이의 연결 확립.(End-to-End
)
정보전달을 두 호스트 간 보단, 주로 프로세스 간(P2P)의 통신으로 바꾸어 준다.
응용계층은 메시지 단위로 전송한다. 이메일로 예를 들면, 헤더가 있고 데이터에 텍스트, 첨부파일 등 메시지에 이런 것들이 다들어간다. 헤더에는 송신자 주소, 수신자 주소, 제목, 날짜가 데이터 형태로 들어가 있다.
이 메시지가 Transport Layer로 내려가면 여러 가지 패킷으로 잘려서 나뉘어진다.
뭐 예를 들면, 255.212.2.0 을 www.hongik.ac.kr 로 바꿔주거나, 그 반대의 변환을 수행하는 것이다. 우리가 원하는 프로세스를 실행시키기 위해서는 포트 번호를 알아야하는데, DNS는 포트를 모르고 이름만 바꿔준다. 따라서, DNS를 사용하고 싶으면 80번 포트를 디폴트로 생각해야 한다!!
국산 앨런 개발 일지 - 네트워크 계층
effot-dev
자비스가 필요해
내가 이해한 것들만 썼는데, 진짜 네트워크는 너무 어렵다. 수업 열심히 들으면서 계속 복습해야 할 듯. 그래도 조금은 다가간 것 같은데...