개요
인터넷은 구조적이고 조직화되어 있는 시스템이다. 네트워크(network, 또는 망)는 컴퓨터나 교환기, 라우터와 같은 통신 장치들을 서로 연결한 그룹이다. 인터넷(internet-소문자 i)은 서로 통신할 수 있는 둘 또는 그 이상의 네트워크이다. 인터넷(Internet-대문자 I)이라 부르는 가장 대표적인 인터넷(소문자 i)은 100만 개 이상의 네트워크가 상호 연결된 네트워크이다. 전 세계적으로 거의 모든 국가에서 정부 기관, 학교, 연구기관, 회사와 도서관 등과 같은 기관뿐만 아니라 일반 개인들도 인터넷을 사용하고 있다. 이 중의 대부분은 일반 사용자이다. 이렇게 엄청난 규모의 통신 시스템은 1969년부터 시작되었다.
커버 범위에 따른 네트워크
네트워크가 연결하고 커뮤니케이션할 수 있는 물리적 또는 지리적 영역을 커버 범위라고 한다. 이 커버 범위에 따라 네트워크는 그 규모와 사용 목적에 맞게 설계되고 구분된다.
- LAN(Local Area Network): 한 건물이나 캠퍼스와 같은 비교적 좁은 지역을 커버하는 네트워크이다. 가정, 사무실, 학교 등 특정 지역 내에서 여러 장치를 연결하는 데 사용한다. LAN은 높은 데이터 전송 속도를 제공하고, 네트워크 내의 장치들 사이에 파일 공유, 프린터 접속, 공동 작업 등을 가능하게 한다.
- WAN(Wide Area Network): 도시, 국가, 대륙을 넘나들며 광범위한 지역을 커버하는 네트워크이다. 인터넷 자체가 가장 큰 WAN의 예시이다. 당연히 LAN보다 큰 지역에 걸쳐 있으며, 인터넷 서비스 제공자(ISP)를 통해 여러 LAN이 서로 연결되는 구조를 가진다. WAN을 통해 장거리 데이터 전송, 웹 접속, 이메일 교환 등이 가능해진다.
❓ISP(Internet Service Provider)
ISP는 개인, 기업, 기관에 인터넷 접속 서비스를 제공하는 회사나 조직이다. ISP는 사용자가 인터넷에 연결할 수 있도록 필요한 기술적 서비스, 인프라, 관련 네트워크 서비스를 제공한다. ISP는 데이터를 전송하는 데 필요한 네트워크 인프라와 서비스를 유지 관리하며, 사용자가 웹 사이트를 방문하거나 온라인 상에서 정보를 주고받을 수 있도록 중계 역할을 한다. 사용자는 보통 월정액 또는 사용량 기반 요금제를 통해 ISP에 비용을 지불하게 된다. ISP는 규모에 따라 소규모 지역ISP부터 국가 또는 국제적으로 서비스를 제공하는 대규모ISP까지 다양하다.
- WLAN(Wireless Local Area Network): LAN의 무선 버전으로, Wi-Fi 기술을 사용해 특정 지역 내에서 컴퓨터와 장치들이 무선으로 연결되는 네트워크이다. WLAN은 이더넷 케이블 없이도 인터넷 접속과 네트워크 리소스 공유를 가능하게 한다. WLAN은 사무실, 카페 등 다양한 공공 장소에서 흔히 사용된다.
현재의 인터넷
현재의 인터넷은 단순한 계층구조가 아니다. 인터넷은 연결 장치와 교환(switching) 지국들로 결합한 많은 근거리 통신망과 광역 통신망으로 구성되어 있다. 이러한 인터넷은 새로운 네트워크가 추가되고, 기존의 네트워크들은 더 많은 주소를 요구하고, 없어진 회사의 네트워크는 삭제해야 하는 등 끊임없이 변하기 때문에 정확히 표현하기가 어렵다. 오늘날 인터넷 연결을 원하는 대부분의 종단 사용자들은 인터넷 서비스 제공자(ISP, Internet Service Provider)을 이용한다. ISP에는 국제 서비스 제공자, 국가 서비스 제공자, 지역 서비스 제공자, 로컬 서비스 제공자가 있다. 현재의 인터넷은 정부에 의해서가 아니라 통신사업자(KT, SK 브로드밴드, LGU+ 등)들에 의해 운영된다.
프로토콜과 표준
먼저 규칙(rule)을 의미하는 프로토콜을 살펴본 다음 합의된 규칙에 대해 설명하겠다.
- 프로토콜
두 사람 또는 두 장치 간에 이루어지는 통신은 일련의 프로토콜(protocol)이 필요하다. 프로토콜은 통신을 주도하는 규칙들의 집합이다. 예를 들면, 두 사람 간에 얼굴을 마주해서 이루어지는 통신은 두 사람이 어떻게 통신을 시작하고, 어떻게 통신을 계속하고, 어떻게 통신을 끝내는 가의 암묵적인 규칙의 집합이 있다.
이와 유사하게, 컴퓨터 네트워크에서 통신은 서로 다른 시스템에 있는 개체 간에 이루어진다. 개체(entity)는 정보를 보내고 받는데 필요한 모든 일을 담당한다. 그렇지만 두 개체가 단순하게 비트 스트림을 보낸다고 해서 서로 내용을 바로 이해할 수 있는 것은 아니다. 통신하기 위해서는 반드시 개체들이 프로토콜에 합의해야 한다. 프로토콜은 데이터 통신을 위한 규칙의 집합이다. 프로토콜로 무엇을, 어떻게, 그리고 언제 통신할 것인가를 규정한다. 프로토콜의 주요 요소는 구문과 의미 그리고 타이밍이다.
💡
구문(Syntax): 데이터가 어떻게 구조화되어야 하는지에 대한 규칙을 정의한다. 예를 들어, 간단한 프로토콜에서 데이터의 처음 8비트는 송신자의 주소를 의미하고, 두 번째 8비트는 수신자의 주소를 의미하며, 나머지는 메시지를 의미한다. 데이터 순서는 또 이를 저장하거나 전송할 때 비트 순서로 적용된다. 서로 다른 컴퓨터는 서로 다른 비트 순서로 데이터를 저장할 수 있다. 이 컴퓨터들이 통신할 때 차이점을 해결하는 것이 필요하다.
* 빅 엔디언(Big Endian)과 리틀 엔디언(Little Endian)
의미(Semantics): 의미는 비트들의 영역별 의미를 나타낸다. 즉, 특정 패턴을 어떻게 해석하고, 그를 기반으로 어떤 동작을 할 것인가를 결정하게 된다. 예를 들면 주소는 메시지의 최종 목적지나 선택되는 경로를 구분하게 된다.
타이밍(Timing): 타이밍은 두 가지 특징을 갖는데, 언제 데이터를 전송하고 얼마나 빠른 속도로 전송할 것인가를 나타낸다. 예를 들어 송신자가 100Mbps로 데이터를 보내는데, 수신자가 1Mbps로 처리하게 되면 감당할 수 없을 정도로 많은 데이터가 전송되어 대부분 데이터는 잃어버리게 될 것이다.
- 표준
오늘날과 같이 개방적이고 경쟁적인 시장과 국제 통신에 있어서 제조업자, 판매업자, 정부기관, 그 밖의 서비스 제공자에게 상호 연동성을 보장하는 것은 매우 중요한 일이다. 따라서, 국제표준화기구인 ISO가 제시한 표준에 준해서 만들어진 제품들은 비록 서로 제조업체가 다르더라도 다른 부가적인 장비 없이 서로 통신이 가능할 뿐만 아니라 제품에 대해 자유 경쟁 시장을 형성함으로써 생산성 향상에도 영향을 끼칠 것이다. 또한 정확하고 효율적인 통신을 위해선 여러 가지 동기화해야할 요인이 많으므로 네트워크의 노드 간에 여러 가지 조정이 필요하다. 따라서 정보통신에는 다양한 표준이 존재하며, 이러한 표준은 국내 및 국제간 데이터 및 전기통신 기술의 상호 연동성을 보장하기 위해 필수적이다.
- 표준화 기구
국제 표준화 기구(ISO: International Standards Organization)
국제 전기통신 연합(CCITT의 후신, ITU-T)
미국 국립 표준원(ANSI: American National Standard Institute)
전기전자공학자협회(IEEE: Institute of Electrical and Electronics Engineers)
한국산업표준원(KISC)
국가 기술 표준원(KATS)
한국정보통신기술협회
...
OSI 모델과 TCP/IP 프로토콜
개방 시스템(Open System)은 기반 구조와 관계없이 서로 다른 시스템 간의 통신을 제공하는 프로토콜의 집합이다. OSI 모델은 하드웨어나 소프트웨어 기반의 논리적인 변화에 대한 요구 없이 서로 다른 시스템 간의 통신을 원활하게 하는데 그 목적이 있다. OSI 모델은 모든 종류의 컴퓨터 시스템 간 통신을 가능하게 하는 네트워크 시스템 설계를 위한 계층구조이다. 이 모델은 서로 연관된 7개의 계층으로 구성되어 있고, 각 계층에는 네트워크를 통해 정보를 전송하는 일련의 과정이 규정되어 있다.
🤯 OSI 7계층을 나눈 이유
모델을 개발하는 과정에서 설계자들은 데이터 전송 과정을 잘 정리하여 가장 기본적인 요소를 추출하였다. 어떤 네트워크의 기능이 사용에 관련되었는가를 확인하여 그 기능들을 서로 다른 그룹으로 구분하였고, 그렇게 구분된 그룹들은 각 계층이 되었다. 각 계층은 다른 계층의 기능과 구분되는 기능들의 집합으로 정의하였다. 이처럼 기능을 정의하고 구분함으로써 흐름을 한눈에 알아보기 쉽고 7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건들이지 않고도 이상이 생긴 단계만 고칠 수 있다. 가장 중요한 점은 OSI 모델이 서로 다른 시스템 간의 완벽한 상호 운용성을 제공한다는 것이다.
예를들어, pc방에서 오버워치를 하고 있는데 연결이 끊겼을 때 어디에 문제가 있는지 확인하기 위한 방법은 다음과 같다.
- 모든 pc에 문제가 있다면 라우터의 문제(네트워크 계층)이거나 광랜을 제공하는 회사의 회선 문제(물리계층)일 것이다.
- 한 PC만 문제가 있고 오버워치 소프트웨어에 문제가 있다면 어플리케이션 계층의 문제일 것이다.
- 오버워치 소프트웨어에 문제가 없고 스위치에 문제가 있다면 데이터링크 계층 문제라고 판단해 다른 계층에 있는 장비나 소프트웨어를 건들이지 않을 것이다.
만약 OSI 7계층을 나누지 않았더라면 문제와 연관된 모든 기기와 소프트웨어를 검토해야 했을 것이다.
계층-대-계층 통신
송신 측에서 메시지는 계층7에서 계층1까지 아래로 이동한다. 계층 1에서 전체 패키지는 수신 측으로 전송될 수 있는 형식으로 변환된다. 수신 측에서 메시지는 계층 1에서 계층 7까지 이동된다.
- 계층 간 인터페이스
데이터와 네트워크 정보가 송신 장치의 각 계층을 따라 전달되고, 다시 수신 장치의 각 계층을 따라 올라가는 것은 인접한 계층 간의 인터페이스(Interface)를 통해 이루어진다. 각 인터페이스는 한 계층이 바로 위의 계층에게 제공해야 하는 정보와 서비스를 정의한다. 예를 들어, 전송 계층은 네트워크 계층으로부터 데이터 패킷을 받아 신뢰할 수 있는 통신을 위해 필요한 정보(예: 포트 번호, 순서 번호 등)을 추가한다. 한 계층이 바로 위의 계층으로 미리 정의된 서비스를 제공한다면, 이는 한 계층의 내부 구현 방식이 변경되어도, 이 변경이 인터페이스를 통해 제공되는 서비스의 정의에 영향을 주지 않는 한, 다른 계층에는 영향을 미치지 않는다는 것을 의미한다.
- 계층의 구성
7계층은 3그룹으로 나눌 수 있다. 제 1, 2, 3계층은 각각 물리층, 데이터 링크 계층, 그리고 네트워크층으로, 한 장치에서 다른 장치로 데이터를 전송할 때 필요한 물리적인 면(전기적인 규격, 물리 주소, 전송 시간과 신뢰도 등)을 처리한다. 제 5, 6, 7계층인 세션층, 표현층, 응용층은 사용자 지원 계층으로 생각될 수 있다. 이들은 서로 관련이 없는 소프트웨어 시스템 간의 상호 연동을 가능하게 한다. 전송층인 제 4계층은 지금 설명한 두 그룹을 연결하고, 하위 계층에서 전송한 내용을 상위 계층이 사용할 수 있는 형태가 되도록 보장한다. OSI 모델의 상위 계층은 거의 대부분 소프트웨어로 구현된다. 하위 계층은 대부분 하드웨어로 구성되는 물리층만을 제외하고 하드웨어와 소프트웨어의 조합으로 이루어진다.
프로세스는 제7계층(응용층)에서 시작해서 차례로 하위 계층으로 이동한다. 각 계층에서 헤더가 데이터 단위에 추가된다. 제 2계층에서는 트레일러도 추가된다. 정형화된 데이터가 물리층(제1계층)을 통해 보내질 때, 데이터는 전자 신호로 변환되어 물리 링크를 따라 전송된다.
목적지에 도달하면, 신호는 제1계층에서 디지털 형태로 변환된다. 그런 다음, 데이터 단위는 OSI계층을 통해 거꾸로 올라간다. 각 데이터 블록이 다음 상위 계층에 도달하면 해당 송신 계층에서 붙었던 헤더와 트레일러는 삭제되고 그 계층에서 해야 할 일들이 수행된다. 제7계층에 도달하면, 메시지는 응용 프로그램에 적절한 형태로 수신자에게 전해진다.
- 캡슐화
그림에서 보이듯이 제7계층의 패킷은 제6계층의 패킷으로 캡슐화된다. 제6계층의 모든 패킷은 제5계층의 패킷으로 캡슐화되며 이후도 마찬가지이다. 즉, N계층의 전체 패킷(데이터와 오버헤드)은 N-1계층 패킷의 데이터 부분으로 전송된다. N-1계층은 캡슐화된 패킷이 데이터인지 헤더 또는 트레일러인지 모르기 때문에 캡슐화라고 한다. N-1계층은 N계층에서 오는 패킷을 하나의 완전한 단위로 취급한다.
OSI 모델의 계층 종류
1. 물리층(Physical layer)
물리층은 물리 매체를 통하여 비트 스트림(bit stream)을 전달하는데 필요한 기능들을 조정한다. 즉 물리층은 개별 비트들을 한 노드에서 다음 노드로 전달하는 책임을 갖는다. 물리층은 전기적 신호가 나가는 물리적인 장비를 통해서 비트들을 전달할 뿐, 전송하려는(또는 받으려는) 데이터가 무엇인지, 어떤 에러가 있는지 등에 대해서는 신경쓰지 않는다. 또한 기계적, 전자적 규격을 제공한다.
전송단위: 비트(bit)
장비: 케이블, 허브
2. 데이터 링크 계층(Data link layer)
물리층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할을 한다. 따라서 통신에서의 오류도 찾아주고 재전송하는 기능을 가지고 있다. 이 계층에서는 MAC주소를 가지고 통신하게 된다. 데이터 링크 계층은 포인트 투 포인트(Point to Point)간 신뢰성 있는 전송을 보장하기 위한 계층으로 CRC(순환 중복검사)기반의 오류 제어와 흐름 제어가 필요하다.
흐름 제어: 송신 측과 수신 측의 속도 차이를 조정
오류 제어: 오류 검출과 회복
순서 제어: 프레임의 순서적 전송
프레임 동기화: 프레임의 시작과 끝을 구별하기 위한 동기화
전송단위: 프레임(Frame)
장비: 브릿지, 스위치, 이더넷
3. 네트워크 계층(Network layer)
경로(Route)와 주소(IP)를 정하고 패킷을 전달해주는 것이 이 계층의 역할이다. 즉, 목적지까지 가장 안전하고 빠르게 데이터를 보내는 기능을 말한다. 따라서 최적의 경로를 설정해야 한다. 이러한 라우팅 기능을 맡고 있는 계층이 네트워크 계층이다.
전송단위: 패킷(Packet/Datagram)
4. 전송 계층(Transport layer)
양 끝단의 사용자들 간의 신뢰성있는 데이터를 주고 받게 해주는 역할을 한다. 송신자와 수신자 간의 신뢰성있고 효율적인 프로세스-대-프로세스 데이터 전송을 위해 오류검출 및 복구, 흐름제어와 중복검사 등을 수행한다. 데이터 전송을 위해 Port번호가 사용된다. 대표적인 프로토콜로는 TCP와 UDP가 있다.
전송단위: 세그먼트(Segment)
5. 세션 계층(Session layer)
응용 프로세스가 통신을 관리하기 위한 방법을 정의한다. 즉 세션층은 네트워크 대화 제어기(dialog controller)이다. 이는 통신 시스템 간에 상호 대화를 설정하고, 유지하고, 동기화한다.
이 계층은 TCP/IP 세션을 설정하고 관리하고 종료하는 역할을 한다.
6. 표현 계층(Presentation layer)
전송하는 데이터의 표현방식을 결정한다. (예: 데이터 변환, 암호화, 압축 등)
GIF, JPEG, ASCII 등의 형식이 있으며 표현계층은 3가지 기능을 가지고 있다.
변환: 서로 다른 컴퓨터는 서로 다른 부호화 시스템을 사용하기 때문에 표현층은 서로 다른 부호화 방법간에 상호 운용성을 책임진다. 송신자의 표현층은 송신자 의존 형식을 공통 형식으로 변경하고 수신자의 표현층은 공통 형식을 해석하기 위해 수신자 의존 형식으로 변경한다.
암호화: 중요한 정보를 전달하기 위해서 시스템은 프라이버시를 보장해야 한다. 암호화는 송신자가 원래의 정보를 다른 형식으로 변환하고 변환된 메시지를 네트워크를 통하여 보내는 것을 의미한다. 복호화는 메시지를 원래 형식으로 되돌릴 수 있도록 변환하는 반대과정이다.
압축: 데이터 압축은 정보에 들어있는 비트의 수를 줄여준다. 데이터 압축은 텍스트, 오디오, 비디오와 같은 멀티미디어 전송에 매우 중요하다.
7. 응용 계층(Application layer)
사용자와 가장 가까운 계층이 바로 응용 계층이다. 우리가 사용하는 응용 서비스나 프로세스가 바로 응용계층에서 동작한다. 대표적으로 우리가 잘 알고있는 HTTP, FTP 등의 프로토콜이 응용 계층에 속한다. 즉, 응용층은 사용자(사람 또는 소프트웨어)가 네트워크에 접속하는 것을 가능하게 하며, 전자우편, 원격 파일 접속과 전송, 공유된 데이터베이스 관리와 같은 서비스를 지원하고 사용자 인터페이스를 제공한다.
TCP/IP 개념 정리(선수 지식)
TCP/IP 프로토콜은 OSI 기본 참조 모델보다 먼저 개발되었다. 따라서 TCP/IP 프로토콜에서 계층은 OSI 물리 계층과 정확하게 일치하지 않는다. 네트워크 전송 시 데이터 표준을 정리한 것이 OSI 7계층이라면, 이 이론을 실제 사용하는 인터넷 표준이 TCP/IP 4계층이다. 즉 TCP/IP 모델의 실질적인 성공과 인터넷의 급속한 확산에 힘입어, 실제 네트워킹 환경에서는 TCP/IP가 널리 사용되고 있다.
❓ OSI와 TCP/IP 그룹 간 비교
두 개의 모델을 비교해보면 TCP/IP 프로토콜 그룹에는 세션과 표현층이 빠져있다. 이 두 계층은 OSI 모델이 발간된 후에 TCP/IP 프로토콜에 더해지지 않았다. 이 결정에 대해선 먼저, TCP/IP는 하나 이상의 전송층 프로토콜을 가지고 있다. 세션층의 기능들 중 일부는 전송층 프로토콜의 일부로 이용할 수 있다.
둘째, 응용층은 소프트웨어의 일부분만이 아니다. 많은 응용이 이 계층에서 개발될 수 있다. 만약 세션층과 표현층에서 언급된 기능 중 일부가 특정 응용에 필요하다면 소프트웨어로 개발해서 포함시킬 수 있다.
OSI 모델은 각 계층에 속하는 주요 기능들을 지정하는 데 반하여 TCP/IP 프로토콜의 계층은 시스템의 요구에 따라 혼합되고 대응될 수 있는 상대적으로 독립적인 프로토콜을 포함한다.
IP(Internet Protocol)
IP는 네트워크 계층(3계층)의 핵심 프로토콜로, 지정한 IP 주소에 데이터의 조각들을 패킷(Packet)이라는 통신 단위로 최대한 빨리 목적지로 보내는 역할이다. 조각들의 순서가 뒤바뀌거나 일부가 누락되어도 크게 상관하지 않고 보내는 데 집중한다. 그래서 IP 프로토콜은 패킷의 순서 보장도 할 수 없고 패킷이 중간에 유실되어도 이에 대한 방안이 없다.
TCP(Transmission Control Protocol, 전송 제어 프로토콜)
TCP는 패킷 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다. 도착한 조각을 점검하여 줄을 세우고 망가졌거나 빠진 조각을 다시 요청하는 식으로 순서를 보증한다. TCP는 데이터를 상대방에게 확실하게 보내기 위해서 3 way handshake 라는 방법을 사용하고 있다. 이 방법은 패킷을 잘 보내고 보내졌는지 여부를 상대에게 확인한다. 여기서 고유의 'SYN'과 'ACK'라는 TCP 플래그를 사용한다.(일종의 확인마크) 즉, TCP는 IP의 문제를 보완해준다. 비록 IP보다 속도는 느리지만 꼼꼼한 방식을 사용하는 것이다.
- TCP 3 way handshake
본격적으로 상대 클라이언트와 연결되기 전에 가상 연결을 한 뒤 패킷으로 보내서 확인하는 동작이다.
이 때 SYN은 접속 요청이고 ACK는 요청 수락이다.
이름 | 의미 |
SYN | 연결을 생성할 때 클라이언트가 서버에 시퀀스 번호를 보내는 패킷 |
SYN-ACK | 시퀀스 번호를 받은 서버가 ACK 값을 생성하여 클라이언트에 응답하는 패킷 |
ACK | ACK 값을 사용하여 응답하는 패킷 |
1. 클라이언트 -> 서버: SYN 패킷 전송
2. 서버 -> 클라이언트: SYN + ACK 패킷 전송
3. 클라이언트 -> 서버: ACK + 데이터 패킷 전송
4. 데이터 패킷 전송
- TCP 순서 보장 방법
1. 클라이언트에서 패킷1, 패킷2, 패킷3 순서로 전송
2. 서버에서 패킷1, 패킷3, 패킷2 순서로 받음
3. 서버에서 패킷2 부터 다시 보내라고 클라이언트에게 요청(TCP 기본 동작)
💡
이렇게 패킷을 순서대로 제어할 수 있는 이유는 TCP 데이터 안에 전송 제어, 순서, 정보들이 있기 때문이다. 그래서 TCP는 신뢰할 수 있는 프로토콜이라고 얘기한다.
UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)
UDP는 TCP와 달리 비연결지향적 프로토콜이다. 전송 계층(4계층)에 위치하며, 데이터 전달과 순서를 보장하지 않고 TCP에 비교해서 기능이 거의 없어 단순하지만, 그 결과로 데이터를 빠르게 전송할 수 있는 장점이 있다. 따라서 IP와 거의 같다고 보면 된다. 포트 번호를 통한 프로세스 간 통신과 간단한 체크섬(메시지를 검증해주는 데이터) 정도만 추가된 형태이다. UDP는 TCP처럼 고정된 복잡한 절차를 따르지 않아도 되므로, 특정 응용 프로그램의 요구 사항에 맞게 프로토콜을 최적화하거나 커스터마이징할 수 있다.
TCP | UDP |
연결지향형 프로토콜 | 비연결지향형 프로토콜 |
바이트 스트림을 통한 연결 | 메세지 스트림을 통한 연결 |
혼잡제어, 흐름제어 | 혼잡제어와 흐름제어 지원하지 않음 |
순서 보장, 상대적으로 느림 | 순서 보장되지 않음, 상대적으로 빠름 |
신뢰성 있는 데이터 전송, 안정적 | 데이터 전송을 보장하지 않음 |
세그먼트 TCP 패킷 | 데이터그램 UDP 패킷 |
HTTP, Email, File transfer에서 사용 | 도메인, 실시간 동영상 서비스에서 사용 |
TCP/IP 4계층
4층 - 애플리케이션 계층 - HTTP, FTP, DNS, SMTP
3층 - 전송 계층 - TCP, UDP
2층 - 인터넷 계층 - IP
1층 - 네트워크 액세스 계층 - Ehternet(이더넷)
TCP/IP 4계층 종류
1. 네트워크 접속 계층(Network Interface Layer) 또는 링크 계층(Link Layer)
TCP/IP 모델에서는 이 계층이 OSI 모델의 물리 계층과 데이터 링크 계층의 기능을 포괄한다. 네트워크의 물리적인 부분과 직접적으로 관련된 계층이며 Node-To-Node 간의 데이터 전송을 담당한다. 이 계층은 데이터를 실제 네트워크 매체를 통해 전송하는 역할을 담당하며, 데이터를 물리적 신호로 변환하고, 네트워크 장비 간의 데이터 전송을 가능하게 하는 하드웨어와 프로토콜을 관리한다. 네트워크 접속 계층은 상위 계층(인터넷 계층)에서 전달받은 패킷에 물리적 정보(예: MAC 주소)를 추가하여 프레임을 형성한다. 이렇게 MAC 주소를 할당하고 사용하여, 네트워크 상의 특정 장치를 식별하고 데이터를 정확한 목적지로 라우팅한다. 전송된 프레임에 포함된 오류 검출 코드(예: CRC)를 통해 데이터 전송 중 발생할 수 있는 오류를 감지하고, 가능한 경우 수정한다. 또한 디지털 데이터를 네트워크 매체(예: 동축 케이블, 광섬유, 무선 링크)를 통해 전송 가능한 전기적 신호나 광신호로 변환한다. 그리고 이 네트워크 매체를 공유하는 여러 장치 간의 데이터 전송을 조정하는데, CSMA/CD(이더넷에서 사용) 또는 CSMA/CA(무선 네트워크에서 사용)같은 접근 제어 방식을 통해 이루어진다.
💡 노드와 링크(Nodes and Links)
앞서 설명한 것처럼 네트워크 접속 계층은 Node-To-Node 간의 데이터 전송을 담당한다. 인터넷의 한 지점에 존재하는 데이터 단위는 많은 네트워크들(LAN, WAN)을 통해 다른 지점으로 보내진다. 이러한 LAN, WAN들은 라우터에 의해 연결되어 있다. 우리는 라우터를 노드(Node)라 칭하고, 라우터 간의 네트워크를 링크(Link)라 칭한다.
2. 인터넷 계층(Internet Layer)
TCP/IP는 인터넷 프로토콜(IP)을 지원한다. IP는 네트워킹에서 데이터 패킷을 목적지까지 전송하는 핵심 프로토콜이다. IP자체는 데이터 전송의 라우팅과 주소 지정을 담당한다. 그러나 네트워크 통신 과정에서는 IP만으로는 충분하지 않으며, 여러 보조 프로토콜(ICMP, ARP, RARP)이 IP의 기능을 보완하고 네트워크 통신을 원활하게 만든다. 인터넷 계층은 IP를 담당하는 계층으로, IP를 사용하여 데이터의 원천지(origin)과 목적지(destination)에 관한 정보를 첨부한다. IP는 복잡한 네트워크 망을 통하여 가장 효율적인 방법으로 데이터의 작은 조각들을 되도록 빨리 보내는 일을 한다. 따라서 IP는 패킷 전달 여부를 보증하지 않고, 경로를 설정하여 어떻게든 빨리 보내도록 한다. IP는 각기 개별적으로 전송되는 데이터그램(Datagram)이라는 패킷 형태로 데이터를 전송한다.
❓Datagram vs Packet
네트워크 층의 전송단위를 보면 어떤 것은 패킷(Packet)이라 표기되고 어떤 것은 데이터그램(Datagram)으로 표기된다. 둘 다 네트워크 계층에서 데이터 전송 단위를 지칭할 때 사용되는 용어이고 종종 혼용되기도 하지만, 특정 상황과 프로토콜에 따라 미묘한 차이를 가질 수 있다.
패킷이라는 용어는 네트워크의 여러 계층에서 데이터 전송 단위를 일반적으로 지칭할 때 사용된다. 특히 TCP/IP 모델에서 전송 계층(TCP)과 네트워크 계층(IP)에서 사용되는 데이터 단위를 가리키는 데 널리 사용된다.
데이터그램은 주로 비연결지향적이고 신뢰성이 보장되지 않는 통신에서 사용된다. 가장 대표적인 예가 UDP이다. UDP는 데이터그램을 사용하여 정보를 전송한다.
패킷은 TCP같은 연결 지향적 프로토콜에서 사용되며, 데이터 전송 순서와 신뢰성을 보장한다. 반면, 데이터그램은 UDP같은 비연결 지향적 프로토콜에서 사용되며, 신뢰성보다는 빠른 전송을 중시한다.
데이터그램은 각각 독립적으로 라우팅되며 전송 순서가 보장되지 않지만 패킷은 연결이 수립된 상태에서 순차적으로 전송되며, 라우팅 경로가 일관되게 유지될 수 있다.
결론적으로, "패킷"과 "데이터그램"은 네트워크에서 데이터를 전송하는 단위를 지칭하는 용어로서, 데이터그램은 주로 UDP와 같은 비연결지향적 프로토콜에서 사용되는 반면, 패킷은 보다 일반적은 용어로서 다양한 상황에서 사용된다.
전송 단위: 패킷(Packet/Datagram)
Protocol | Content |
IP | 비연결 서비스를 제공하며, 발신지와 목적지까지의 라우팅 경로를 결정한다. |
ICMP(Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜) | IP제어와 메시지 기능을 담당한다. 송신자에게 데이터그램의 문제점을 알려주기 위해 호스트와 게이트웨이가 사용하는 메커니즘이다. 즉 ICMP는 조회와 오류 보고 메시지를 보낸다. |
ARP(Address Resolution Protocol, 주소 변환 프로토콜) | IP 주소를 이용해 상대방의 MAC 주소를 알아오는 프로토콜이다. 즉, IP 주소를 물리적인 주소로 변환해준다. (브로드캐스트 요청, 유니캐스트 응답) |
RARP(Reverse Address Resolution Protocol, 역순 주소 프로토콜) | MAC 주소에 해당하는 IP 주소를 알아오는 프로토콜(브로드캐스트 요청, 유니캐스트 응답) |
3. 전송 계층(Tranport Layer)
TCP/IP에서 전송층은 3개의 프로토콜(TCP, UDP, SCTP)을 갖는다. IP는 호스트-대-호스트 프로토콜(Host-to-Host Protocol)로서 패킷을 하나의 물리적인 장치에서 다른 물리적인 장치로 전달할 수 있다는 것을 의미한다. UDP, TCP, SCTP는 하나의 프로세스(실행 중인 프로그램)에서 다른 프로세스로 메시지를 전달하는 기능을 갖는 전송 레벨 프로토콜(Transport Level Protocol) 이다. TCP는 신뢰성있는 스트림(stream) 전송 프로토콜이다. 여기서 스트림이란 용어는 연결형을 의미한다. 데이터를 전송하기 전에 양 종단 간의 연결을 설정해야 한다.
각 전송의 송신 종단에서 TCP는 데이터 스트림 세그먼트(Segment)라는 작은 단위로 나눈다. TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다. 즉, 순서가 맞지 않거나 중간에 빠진 부분을 점검하여 다시 요청하는 일을 담당한다.
Protocol | Content |
TCP(Transmission Control Protocol) | 연결 지향적(Conncection Oriented) 신뢰적, 흐름제어, 에러제어 (순서번호, ACK 번호 사용) ACK 받지 못한 모든 데이터는 재전송 장점은 보장된 세그먼트로 전달하기 때문에 신뢰성이 있다. 단점은 연결을 위한 초기 설정 시간이 오래 걸린다. |
UDP(User Datagram Protocol) | 비연결 지향적(Connectionless Oriented) 비신뢰적, 데이터를 보낸 후에 잘 도착했는지 검사하지 않는다. 장점은 빠르며, 연결을 맺지 않으므로 제어 프레임 전송을 할 필요가 없기에 네트워크 부하를 줄일 수 있다. 신뢰성보다는 고속성을 요구하는 멀티미디어 응용 등에 일부 사용되고 있다. |
SCTP(Stream Control Transmmision Protocol) | UDP와 TCP의 장점을 결합한 전송 제어 프로토콜이다. |
전송 단위: 세그먼트(segment)
두 전송층은 서로 세그먼트를 이용하여 통신하는 것으로 생각하지만 통신은 물리층에서 비트 교환을 통해 이루어진다.
4. 응용층(Application Layer)
TCP/IP에서 응용층은 OSI 모델의 세션, 표현, 그리고 응용층을 합친 것과 같다. 종단 사용자가 직접 눈으로 볼 수 있는 층으로 사용자에 대해서 직접 통신 기능을 제공한다. 응용층은 사용자가 사설 인터넷이나 글로벌 인터넷에 접근하는 것을 허용한다. 이 계층에는 전자 우편, 파일 전송, www 접속 등의 많은 프로토콜이 규정되어 있다. 즉, 서버나 클라이언트 응용 프로그램이 이 계층에서 동작한다. 우리가 알고 있는 브라우저나 텔넷같은 서비스가 이 계층에서 동작하는 것이다.
Protocol | Content |
DNS(Domain Name System) | 인터넷에서 사용하는 이름(domain)을 해당 IP 주소로 변환해주는 서비스 |
SNMP(Simple Network Management Protocol) | 네트워크 장비를 모니터링하고 제어하는 프로토콜 |
FTP(File Transfer Protocol) | TCP 환경에서 파일을 전송하는 프로토콜 |
TFTP(Trival File Transfer Protocol) | UDP 환경에서 파일을 전송하는 프로토콜 |
HTTP(Hypertext Transfer Protocol) | 웹상에서 정보를 주고받을 수 있는 프로토콜 |
전송 단위: 메시지
TCP/IP 4계층 동작 순서
1. 송신측 클라이언트의 응용층에서 어느 웹 페이지를 보고싶다 라는 HTTP 요청을 지시한다.
2. 전송 계층에서 응용층에서 받은 데이터(HTTP 메시지) 를 통신하기 쉽게 조각내어 안내 번호와 포트 번호(TCP 패킷)을 붙여 네트워크 계층에 전달한다.
3. 네트워크 계층에서 데이터에 IP 패킷을 추가해서 링크 계층에 전달한다.
4. 링크 계층에서는 수신지 MAC 주소와 이더넷 프레임을 추가한다.
5. 이로써 네트워크를 통해 송신할 준비가 되었다.
6. 수신측 서버는 링크 계층에서 데이터를 받아들여 순서대로 위의 계층에 전달하여 응용층까지 도달한다.
💡
물리층, 데이터 링크층의 통신과 네트워크층, 전송층, 응용층의 통신 간에는 주요 차이점이 있다. 물리층, 데이터 링크층의 통신은 노드-대-노드인 데 반하여 다른 계층 간의 통신은 종단-대-종단이다.
- 네이버 접속 시나리오
1. 웹 브라우저에 www.naver.com 입력
2. DNS로 네이버 서버 IP 주소 할당
3. 응용층에서 메시지 데이터 패킹(HTTP 메시지)
4. 전송 계층에서 PORT 정보(출발지, 목적지), 전송제어 정보, 순서 정보, 검증 정보 패킹(TCP)
5. 인터넷 계층에서 IP정보(출발지, 목적지) 패킹
6. 네트워크 액세스 계층에서 MAC주소 패킹
7. 게이트웨이를 통해 인터넷망 접속
8. 라우터를 통해 목적지(네이버 서버)를 찾아 연결
9. 네이버 서버에 도착하면 패킷을 하나 하나 까면서 목적 포트에 메시지 데이터 전달하여 다시 응답
주소 지정
TCP/IP 프로토콜을 이용한 인터넷은 3개의 서로 다른 계층의 주소가 사용되는데, 이는 물리(링크) 주소(physical address), 논리(IP) 주소(logical address), 그리고 포트 주소(port address)이다. 아래 그림에 나타난 것처럼, 각 주소는 TCP/IP 구조에서 계층과 관련이 있다.
- 물리 주소
링크 주소로 잘 알려진 물리 주소는 LAN이나 WAN에서 정의된 노드의 주소이다. 이것은 데이터 링크층에 의해 사용되는 프레임에 포함된다. 이것이 최하위 계층 주소이다. 물리 주소는 링크(LAN 또는 WAN) 상의 권한을 갖는다. 이 주소의 크기와 형식은 네트워크에 따라 매우 다양하다. 예를 들어, 이더넷은 네트워크 인터페이스 카드(NIC)에 있는 6바이트(48비트)의 물리 주소를 사용한다.
대부분의 근거리 통신망에서는 다음과 같이 1바이트마다 콜론(:)으로 나누어지는 16진수 12자리로 구성된 48비트(6바이트)의 물리 주소를 사용한다.
07:01:02:01:2C:4B
6바이트(16진수 12자리) 물리주소
물리 주소는 유니캐스트(unicast, 단일수신자), 멀티캐스트(multicast, 그룹 수신자) 또는 브로드캐스트(broadcast, 네트워크의 모든 시스템이 수신)가 될 수 있다. 어떤 네트워크는 이 세 주소를 모두 지원한다. 예를 들어, 이더넷은 유니캐스트 물리 주소(6바이트), 멀티캐스트 주소, 브로드캐스트 주소를 지원한다. 멀티캐스트나 브로드캐스트 주소를 지원하지 않는 네트워크도 있다.
- 논리 주소
IP 주소라고도 하는 논리 주소는 기존 물리적인 네트워크와는 독립적인 전 세계적인 통신 서비스를 위해 필요하다. 물리 주소는 서로 다른 네트워크가 서로 다른 주소 형태를 갖는 네트워크 간 상호 접속 환경에는 적합하지 않다. 기존의 물리적인 네트워크에 관계없이, 각 호스트를 유일하게 식별할 수 있는 전 세계적인 주소지정 시스템이 필요하다.
논리 주소는 이러한 목적을 위해 설계되었다. 논리 주소는 현재 인터넷에 연결된 호스트를 유일하게 식별할 수 있는 32비트 주소체계를 사용한다. 인터넷상의 두 호스트는 동일한 IP 주소를 사용할 수 없다.
💡 물리 주소는 홉에서 홉으로 갈 때마다 변경되지만 논리 주소는 같은 상태로 유지된다.
논리 주소는 유니캐스트, 멀티캐스트 또는 브로드캐스트가 될 수 있다. 브로드캐스트 주소에는 제한이 있다.
IP주소 예시는 다음과 같다.
1. IPv4 주소 '192.168.1.1': IPv4 주소는 32비트 주소 체계를 사용하며, 일반적으로 네 부분으로 나뉜 10진수로 표현된다. 각 부분은 0~255 사이 값을 가질 수 있다.
2. IPv6 주소 '2001:0db8:85a3:0000:8a2e:0370:7334': Ipv6 주소는 128비트 주소 체계를 사용하며, 16진수로 표현되는 여덟 그룹으로 나뉜다. IPv6는 인터넷의 성장으로 인해 IPv4 주소의 부족 문제를 해결하기 위해 도입되었다.
- 포트 주소
다량의 데이터를 발신지에서 목적지 호스트까지 전송하기 위해서는 IP 주소와 물리 주소가 필요하다. 그러나 목적지 호스트에 도착하는 것이 인터넷을 통한 데이터 통신의 최종 목적이 아니다. 오늘날 컴퓨터는 여러 개의 프로세스를 동시에 실행할 수 있다. 인터넷 통신의 최종 목적은 한 프로세스가 다른 프로세스와 통신할 수 있도록 하는 것이다. 예를 들면, 컴퓨터 A는 텔넷을 이용하여 컴퓨터 C와 통신할 수 있다. 동시에 컴퓨터 A는 FTP를 이용하여 컴퓨터 B와 통신한다. 동시에 발생되는 이러한 프로세스들을 위해 서로 다른 프로세스를 식별하는 방법이 필요하다. 다시 말해서, 주소가 필요하다. TCP/IP 구조에서 프로세스에 할당된 레이블은 포트 주소(port address)라고 한다. TCP/IP에서 포트 주소 길이는 16비트이다.
💡 물리 주소는 홉에서 홉으로 갈 때마다 변경되지만 논리주소와 포트주소는 항상 같은 상태로 유지된다.
포트 주소는 다음과 같이 하나의 10진수로 표현된다.
753
16비트 포트 주소(0~65535)는 하나의 숫자로 표현된다.
잘 알려진 몇 가지 포트 번호 예시는 다음과 같다.
1. 20/21: FTP서비스, 21번 포트는 제어 목적으로, 20번 포트는 데이터 전송에 사용된다.
2. 22: SSH(Secure Shell) 서비스, 안전한 네트워크 서비스를 위한 접속에 사용된다.
3. 25: SMTP(Simple Mail Transfer Protocol) 서비스, 이메일 전송에 사용된다.
4. 80: HTTP 서비스, 웹 페이지 접속에 사용된다.
5. 443: HTTPS(HTTP Secure), 암호화된 웹 페이지 접속에 사용된다.