목차
TCP / IP 모델
인터넷: 데이터의 중개 기능을 담당하는 네트워크 계층으로 IP Internet Protocol 프로토콜을 사용하는 네트워크.
➡ 인터넷에 연결하고자 하는 호스트는 반드시 IP 프로토콜을 지원해야 함(인터넷에서 주로 사용하는 IP 프로토콜은 버전 4(IPv4)임)
➡ 전송 계층은 TCP(Transmission Control Protocol), UDP(User Datagram Protocol)를 사용
구현 환경
구현 공간: 인터넷에 연결된 컴퓨터의 네트워크 구현 모델은 전송 계층까지의 기능을 시스템 공간인 운영체제 내부에 구현함
-
LAN 카드 드라이버 루틴 Driver Routine: 인터넷 환경에서 사용하는 TCP/IP와 하위 계층의 기능을 담당.
운영체제 영역에 속함 -
TCP/IP 이용방법: 사용자 공간에서 네트워크 응용 기능을 지원하는 프로그램을 작성해야 함
[구현 공간]
시스템 공간
[TCP와 UDP의 이용]
- TCP와 UDP는 시스템 운영체제인 커널 Kernel 내부에 구현됨
➡ 일반 사용자가 이 기능을 직접 이용 불가 - 대신 소켓 Socket 인터페이스라는 전송 계층의 프리미티브를 통해 이용가능
- 소켓 Socket 인터페이스: 운영체제에서 시스템 콜 기능으로 구현됨
➡ 사용자 프로그램에서 이를 호출하는 방식으로 사용함
- 소켓 Socket 인터페이스: 운영체제에서 시스템 콜 기능으로 구현됨
- TCP: 연결형 서비스를 제공함
- UDP: 비연결형 서비스를 제공함
[IP Internet Protocol]
인터넷에서 네트워크 계층 구현은 IP로 구현됨.
[네트워크 계층]
전송 패킷의 올바른 경로 선택 기능을 제공함.
[드라이버 루틴]
네트워크 계층 아래의 계층들
LAN 카드와 LAN 카드를 구동하는 드라이버 루틴에 의해 구현됨
사용자 공간
사용자 프로그램: 세션 계층부터 응용 계층까지의 기능은 사용자 프로그램으로 구현됨
[TCP와 UDP 기능을 사용 방법]
- 프로그래밍 환경에서 전송 계층의 기능을 제공하는 소켓 시스템 콜을 호출해 TCP와 UDP 기능을 사용 가능
- 소켓 시스템: 유닉스 Unix , 리눅스 Linux , 윈도우즈 운영체제 등 인터넷에 접속 가능한 모든 호스트에서 제공함
- 프로그램에서 소켓을 사용할 때는 소켓마다 부여되는 고유 주소인 포트 번호를 관리해야 함.
- 일반 네트워크 프로그램은 포트 하나를 할당해 사용하므로 포트 번호와 사용자 프로그램이 일대일로 대응됨.
- 응용 환경에 따라서는 포트 번호를 여러 개 할당할 수도 있음.
- 응용 프로그램을 설계할 때는 포트 할당에 주의해야 하지만, 일반 사용자는 프로그램 하나에 포트 하나를 사용한다고 가정해도 큰 문제가 없음.
- 인터넷 응용 프로그램의 고유 주소는 IP 주소와 포트 번호의 조합으로 구성됨
[네트워크 응용 프로그램]
- 상위 계층은 아래 그림처럼 사용자 프로그램 공간에서 구현됨
- 네트워크 응용 프로그램: 텔넷 Telnet , FTP, 웹 브라우저 등이 있는데, 모두 TCP와 UDP를 사용해 네트워크에 연결한다.
프로토콜
앞서 설명한 것처럼 인터넷에서 데이터 전송은 계층 4의 TCP와 UDP, 계층 3의 IP에 의해 이루어진다. 더 보기
TCP/IP 모델에서는 사용자 데이터의 전송이 TCP, UDP, IP에 의해 이루어지지만, 이들이 올바르게 동작하려면 더 많은 프로토콜이 필요함.
[문제 해결]
TCP/IP 모델의 동작에서 매우 중요한 역할을 하는 것들
- ARP/RARP: 주소 문제를 해결하기 위함
- ICMP: 오류 문제를 해결하기 위함
TCP/IP 계층 구조
TCP/IP를 사용하는 인터넷 환경에서 관련 프로토콜들의 계층 구조
[맨 위의 응용 프로그램]
- TCP와 UDP를 사용해 데이터 송수신 기능을 수행함
- 네트워크 계층의 IP 프로토콜을 직접 사용하기도 함.
[네트워크 계층]
- IP
- 사용자 데이터를 전송하는 프로토콜
- ICMP와 ARP/RARP
- 네트워크 계층에 소속되어 IP의 동작을 도와줌
- ICMP(Internet Control Message): IP의 동작 과정에서 전송 오류가 발생하는 경우에 대비해 오류 정보를 전송하는 목적으로 Protocol을 사용
➡ ICMP는 IP 프로토콜과 같은 계층으로 간주할 수 있지만, ICMP에서 발생하는 ICMP 메시지는 IP 패킷에 캡슐화되어 전송된다 - ARP/RARP: 밑에 설명
ARP와 RARP
[TCP/IP 모델에서 사용하는 주소]
- 데이터 링크 계층의 MAC 주소
- 네트워크 계층의 IP 주소
- 전송 계층의 포트 번호(포트 번호는 사용자 프로그램 환경에서 사용되므로, 번호 할당과 관리가 다른 계층 프로토콜의 동작에 크게 영향을 미치지 않는다)
ARP
Address Resolution Protocol로 사용자로부터 입력된 상대방 호스트의 IP 주소를 이용해 MAC 주소를 구하는 것
이해가 안되니 더 자세히 보자.
IP 주소와 MAC 주소는 프로토콜의 동작 특성상 몇 가지 고려할 사항이 있다.
[동작 특성 고려할 점]
- 계층 2 프로토콜을 이용해 데이터를 전송하려면 목적지 호스트의 MAC 주소가 필요하다.
- 일반적으로 송신 호스트는 자신의 IP 주소와 MAC 주소는 쉽게 얻을 수 있지만,
수신자의 주소를 얻으려면 몇 단계의 처리 과정이 필요하다. - 상대방 호스트의 IP 주소는 응용 프로그램의 사용자로부터 입력되지만,
MAC 주소 정보는 어디에서도 얻을 수 없음.
➡ 따라서 사용자로부터 입력된 상대방 호스트의 IP 주소를 이용해 MAC 주소를 구하는 기능이 필요함 (ARP (Address Resolution Protocol) 가 이 기능을 담당한다.
RARP
MAC 주소를 IP 주소로 변환함
LAN 카드에 보관된 MAC 주소를 이용해 IP 주소를 제공하는 프로토콜이다.
일반 컴퓨터 시스템은 로컬 호스트의 IP 주소가 파일 시스템에 보관되므로 RARP를 사용하지 않지만, 디스크가 장착되지 않은 시스템에서는 RARP를 반드시 사용해야 한다.
이게 왜 필요하냐면,
호스트의 IP 주소는 컴퓨터 설정 작업의 초기화 과정에서 특정 파일에 보관된다.
그러나 하드 디스크가 없는 시스템은 LAN 카드에 내장된 자신의 MAC 주소는 알지만, 파일 시스템이 존재하지 않으므로 IP 주소를 알 수 없다.
이 문제를 해결하기 위하여 MAC 주소를 IP 주소로 변환하는 RARP Reverse Address Resolution Protocol 가 필요하다.
ICMP
Internet Control Message Protocol의 약자로 전송오류시 복구작업을 담당한다.
즉 사용자 데이터의 전송 과정에서 오류가 발생하면 오류 메시지가 생성되는데, ICMP Internet Control Message Protocol 는 이를 전송하는 기능을 담당하는 프로토콜이다.
데이터 전송 프로토콜인 IP가 동작하는 과정에서는 전송 오류가 발생할 수 있다.
오류가 발생 하면 반드시 송신자에게 회신해 복구 작업을 하게 해야 하는데 이 작업을 담당
ICMP 프로토콜은 오류 메시지를 전송하기 위한 별도의 헤더 구조를 가지며, IP 패킷에 캡슐화되어 전송되지만 IP와 같은 계층으로 취급된다.
요약
아래 키워드를 보고 뭘 배웠는지 생각해보고 키워드를 눌러 내가 생각한 내용과 같은지 확인해보자
📜 모듈화
일반적으로 복잡하고 큰 시스템의 기능은 특정 단위의 모듈로 나누어 설계한다. 시스템을 기능 별로 모듈화하면 시스템 구조가 단순해져서 전체 시스템을 이해하기 쉽다. 또한 각 단위 모듈이 독립적인 기능을 수행하기 때문에 고장이나 업그레이드 등의 상황에 손쉽게 대처할 수 있다.
📜 주소의 표현
여러 호스트가 연결된 환경에서 특정 호스트끼리 통신하려면 상대방을 구분할 수 있는 방법이 필요하다. 시스템을 구분하여 지칭하기 위해서 이름을 부여하는 것을 주소 체계라 한다. 일반적 으로 호스트에 주소를 하나씩 부여하지만, 다수의 호스트를 묶어 그룹 주소로 표기하기도 한다.
일대다 통신의 대표적인 표기 방법에는 네트워크에 연결된 모든 호스트에 데이터를 전송할 수있는 브로드캐스팅과 특정 사용자를 그룹으로 묶어서 지칭하는 멀티캐스팅이 있다.
📜 오류 제어
네트워크에서는 데이터 송수신 과정에서 오류가 발생할 수 있다. 전송 오류에는 데이터가 깨져서 도착하는 데이터 변형 오류와 데이터가 도착하지 못하는 데이터 분실 오류가 있다. 오류가 발생하는 1차 원인은 물리 계층의 전송 매체에 의한 물리적인 오류이다. 데이터가 변형되거나 분실되는 오류를 해결하려면 먼저 오류가 발생한 사실을 인지해야 한다. 네트워크에서 전송 오류를 해결하는 방법은 송신 호스트가 원래 데이터를 재전송하는 것이다
📜 흐름 제어
전송 매체에서 물리적인 오류가 없었는데도 데이터를 분실하는 경우가 있는데, 이는 송수신 호스트 사이의 데이터 전송/처리 속도 차이 때문에 발생하기도 한다. 수신 호스트의 버퍼 처리 속도보다 송신 호스트가 데이터를 전송하는 속도가 빠르면 논리적인 데이터 분실 오류가 발생할 수있다. 이 문제를 해결하려면 송신 호스트의 전송 속도를 조절하는 흐름 제어 기능이 필요하다.
📜 서비스 프리미티브
프로토콜은 계층 구조로 이루어져 있고, 하위 계층이 상위 계층에 서비스를 제공하는 방식으로 동작한다. 이러한 서비스는 프리미티브 형태로 구현되며, 연결형 서비스에서 자주 사용하는 프리미티브의 종류에는 CONNECT, DATA, DISCONNECT가 있다. 통신 프로토콜에서 서비스 프리미티브를 올바르게 수행하려면 각 프리미티브가 Request, Indication, Response, Confirm이라는 네 가지 기능을 포함하도록 설계해야 한다. 클라이언트가 서버에 전달하는 요청은 Request와 Indication으로 구현되고, 서버의 응답은 Response와 Confirm으로 구현된다.
📜 OSI 참조 모델
네트워크에 연결된 컴퓨터들이 데이터를 주고받으려면 서로 연동할 수 있게 표준화된 인터페이 스를 지원해야 한다. 국제 표준화 기구인 ISO가 확립한 OSI 7계층 모델은 개방화된 데이터 통신 환경에 적합한 계층적 구현 모델의 표준이다. 연결된 두 호스트가 각각 7개 계층으로 구성된 모듈을 수행함으로써 데이터 송수신이 가능하다. 전송 데이터는 송신 호스트의 응용 계층에서 시작해 하위 계층으로 순차적으로 전달되어, 최종적으로 물리 계층이 수신 호스트에 전달해준 다. 수신 호스트에서는 데이터를 상위 계층으로 순차적으로 이동시켜 응용 계층까지 보내준다.
📜 TCP/IP 모델
인터넷은 데이터의 중개 기능을 담당하는 네트워크 계층으로 IP 프로토콜을 사용하는 네트워크 이다. 인터넷에 연결된 컴퓨터의 네트워크 구현 모델에서는 전송 계층까지의 기능을 시스템 공간인 운영체제 내부에 구현한다. TCP와 UDP는 시스템 운영체제인 커널 내부에 구현되므로, 소켓 인터페이스라는 전송 계층의 프리미티브를 사용자 프로그램에서 호출하는 방식으로 사용 한다. 세션 계층부터 응용 계층까지의 기능은 사용자 프로그램으로 구현된다.
📜 ARP/RARP
TCP/IP 모델에서 사용하는 주소는 데이터 링크 계층의 MAC 주소, 네트워크 계층의 IP 주소, 전송 계층의 포트 번호이다. 계층 2 프로토콜을 이용해 데이터를 전송하려면 목적지 호스트의 MAC 주소가 필요하다. 일반적으로 송신 호스트는 자신의 IP 주소와 MAC 주소는 쉽게 얻을 수있지만, 수신자의 MAC 주소를 얻으려면 몇 단계의 처리 과정이 필요하다. 사용자로부터 입력된 상대방 호스트의 IP 주소를 이용해 MAC 주소를 구하는 기능이 필요한데, ARP가 이 기능을 담당한다.
하드디스크가 없는 시스템은 LAN 카드에 내장된 자신의 MAC 주소는 알지만 파일 시스템이 존재하지 않으므로 IP 주소를 알 수 없다. 이 문제를 해결하기 위하여 MAC 주소를 IP 주소로 변환하는 RARP가 필요하다.
📜 ICMP
데이터 전송 프로토콜인 IP가 동작하는 과정에서는 전송 오류가 발생할 수 있다. 오류가 발생하면 반드시 송신자에게 회신하여 복구 작업을 할 수 있게 해야 하는데, 이 작업은 ICMP가 담당 한다. ICMP 프로토콜은 오류 메시지를 전송하기 위한 별도의 헤더 구조를 가지며, IP 패킷에 캡슐화되어 전송되지만 IP와 같은 계층으로 취급된다.