1. 네트워크의 역사
네트워크는 1960~1970년대에 미국에서 연구되고 개발되었다. 이때 미국 고등연구계획국(DARPA, Defense Advanced Research Projects Agency) 이 연구기관과 관련기관 간의 정보 공유를 위해 추진한 프로젝트로 ARPANET(Advanced Research Projects Agency Network)이 만들어졌다. 이것이 인터넷의 뿌리이다.
이 네트워크는 데이터를 패킷(packet) 이라 부르는 작은 단위로 잘라서 통신하는 패킷 교환 방식(packet exchange method) 을 처음으로 채용했으며 이 방식이 현재 인터넷에도 이어지고 있다.
2. 패킷 교환 방식
영어 패킷(packet)은 '소포'라는 의미이다. 소포를 보낼때 운송장을 붙이는 것처럼 데이터 패킷(packet)에 헤더(header)를 붙여 전송한다. 운송장처럼 헤더에는 수신 컴퓨터 정보, 어떤 데이터인지 등의 다양한 정보가 포함된다.
수신 컴퓨터는 헤더의 정보를 확인하고 원래의 데이터로 복원한다. 중간에 예상치 못한 사고로 일부 패킷정보가 소실되어도 해당 패킷만 다시 전송하면 된다.
3. 프로토콜
패킷이라고 해도 마음대로 패킷을 네트워크로 전달할 수 없다. 네트워크에는 패킷을 처리하기위한 규칙이 있다. 이 규칙을 프로토콜(protocol, communication protocol, 통신프로토콜) 이라 부른다. 이 프로토콜은 통신의 기능별로 명확히 구분되어 있기 때문에, 기기가 달라도 동일하게 패킷을 교환할 수 있다.
다양한 통신들을 정의한 프로토콜은 계층으로 구분된다. 이때 등장하는 두가지 계층 모델이 OSI 7계층 모델과 TCP/IP 4계층 모델이다. 두가지 계층 모델 모두 통신에 필요한 기능을 계층으로(레이어) 정리하고 있다.
3.1. TCP/IP 4계층 (Transmission Control Protocol / Internet Protocol)
계층에서 처리하는 데이터 단위를 PDU (Protocol Data Unit) 라 부른다. PDU 는 제어 정보를 포함한 헤더(header), 데이터 그 자체인 페이로드(payload)로 구성되며, 처리 계층에 따라 명칭이 다르다.
3.1.1. TCP : 전송 제어 프로토콜(Transmission Control Protocol) 특징
- 연결지향형 - TCP 3 way handshake (가상 연결)
- 통신을 시작하는 것을 확인 한 후 시작하는 방식
- 통신을 시작하는 시점부터 도착하는 것이 보증된다.
- 통신종료시에도 수신측과의 통신종료를 확인한 후 종료한다.
- 데이터 전달 보증
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
3.1.1.1. TCP 3 way handshake
- SYN 는 Synchronize sequence numbers 의 약자로 Synchronize 에는 "동시에 일어나다"라는 의미가 있다.
- ACK 는 Acknowledgement 의 약자로 "승인" 이라는 의미이다.
* 3way handshack 에 의한 오픈처리에서 커넥션을 만들어가는 클라이언트 처리를 액티브 오픈, 커넥션을 수신하는 서버의 처리를 패시브 오픈이라 부른다.
시작하기전 클라이언트는 CLOSED, 서버는 LISTEN 상태이다. 웹브라우저(클라이언트)로부터 HTTP로 웹서버에 접속하는 경우, 웹브라우저는 웹서버에 접속하지 않는 한 CLOSE 상태이며, 웹서버는 기본으로 LISTEN 상태로 커넥션을 받아들일 수 있도록 한다.
- 클라이언트는 SYN 패킷을 송신하고, 오픈 처리에 들어간다. 이에따라 SYN-SENT 상태로 SYN/ACK 패킷을 기다린다.
- SYN 패킷을 수신한 서버는 패시브 오픈*처리에 들어가며 SYN/ACK 패킷을 반환하고 SYN-RECEIVED 상태가 된다.
- SYN/ACK 패킷을 수신한 클라이언트는 ACK 패킷을 반환하고 ESTABLISHED 상태로 이동한다.
이는 커넥션이 완료된 상태이며, 이 상태가 되면 실제 애플리케이션 데이터를 송수신할 수 있게된다.
3.1.2. UDP : 사용자 데이터그램 프로토콜(User Datagram Protocol) 특징
- 비연결형
- 사전 확인 없이 언제든 수신측에게 정보를 보낼 수 있는 방식
- 수신측이 준비되어 있지 않으면 데이터가 도달하지 못할 가능성이 있다.
- 통신 종료시에도 확인하지 않는다.
- 단순하고 빠르다
- 데이터 전달 및 순서가 보장되지 않는다
3.1.3. TCP , UDP 비교 정리
TCP | UDP | |
통신방법 | 연결지향형 | 비연결형 |
특징 | 확실성 중시 | 효율적, 즉시성 중시 |
신뢰성 | 높은 신뢰성 | 낮은 신뢰성 |
속도 | 저속 | 고속 |
예 | 웹사이트, 메일 등 일반적인 인터넷 이용 |
IP전화, Web회의 등 실시간을 중시하는 서비스 |
3.1.1. 네트워크 인터페이스 계층, 링크 계층
동일한 네트워크내에서 데이터를 전송하는 역할을 한다.
주요 프로토콜은 유선의 Ethernet(이더넷) 이나 무선 LAN(Wi-Fi), PPP 등이 있다.
3.1.2. 인터넷 계층
네트워크 간 데이터를 전송하는 역할을 한다. 이때 다수의 네트워크끼리 접속해 데이터 전송을 하는 것이 라우터이다.
프로토콜은 IP, ICMP, ARP 등이 있으며 주로 IP를 이용한다.
ICMP 는 TCP/IP에서 IP패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜이며, ARP는 IP주소로부터 MAC 주소(물리적)로 대응시키기 위해 사용되는 프로토콜이다.
3.1.3. 전송 계층, 트랜스포트 계층
데이터를 적절한 어플리케이션으로 분배하는 역할이다.
주요 프로토콜은 TCP와 UDP가 있다.
TCP 는 송신중에 데이터가 유실되도 재전송으로 신뢰성있는 통신을 할 수 있게 해준다. 예를들어 웹사이트를 열람하거나 메일을 송수신 하는 등 인터넷의 대부분이 TCP를 이용하고 있다.
UDP 는 정확성은 떨어지지만, 신속하게 데이터를 전송하는데 적합한 방법이다. 따라서 데이터 송신중에 에러가 발생하면 재전송 되는 것이 아니라 그대로 소실되버린다. Web회의, IP전화를 생각하면 된다. 음성이 끊기거나 영상이 제대로 송수신 되지 않는 것이 이 특징 때문이다.
3.1.4. 애플리케이션 계층, 응용 계층
애플리케이션에서 처리하는 데이터의 형식과 절차를 결정하는 역할을 한다. 기본적으로 사람이 취급하기 때문에 문자, 이미지 등 사람이 인식할 수 있도록 데이터를 표현한다.
주요 프로토콜은 HTTP, SMTP, POP3, IMAP4, DHCP, DNS 등이 있다.
HTTP 는 웹 브라우저에서 이용하고 SMTP, POP3 은 메일에서 이용한다. DHCP, DNS 는 어플리케이션 통신을 수행하기 위한 준비 프로토콜로 보완적인 역할을 한다.
3.2. OSI 7계층 (Open Systems Interconnection 7 Layer)
3.2.1. 물리 계층
데이터 단위 (PDU)는 비트(bit) 이다. 데이터링크 계층에서 전달받은 디이털 데이터 프레임(비트 열)을 케이블이나 전파로 보내는 아날로그 신호로 변환하기 위한 규칙을 정의하고있다. 반대로 케이블이나 전파를 통해 수신받은 아날로그 신호를 디지털 데이터(비트 열)로 변환하는 규칙도 포함한다. 또한 케이블, 커넥터 등의 물리적인 모든 요소도 정의한다.
3.2.2. 데이터 링크 계층
데이터 단위 (PDU)는 프레임(frame) 이다. 데이터링크 계층은 같은 네트워크에 있는 단말을 식별하고, 물리 계층 위에서 비트 열을 정확히 전송하는 구조를 제공한다. 물리 계층은 디지털 데이터를 신호로 변환하는 과정(부호화)에서 비트이상이 발생할 수 있지만 수신하는 단말에서 정정할 수 있다. 하지만 복잡한 에러라면 물리계층에서만 처리할 수 없게 된다.
따라서 디지털 데이터 전체의 정합성을 체크함으로써, 물리 계층만으로는 정정할 수 없는 에러를 감지하고 디지털 데이터의 신뢰성을 담보한다. 또한 'MAC 주소'라는 네트워크상의 주소를 사용해서 송신 단말과 수신 단말을 식별한다.
3.2.3. 네트워크 계층
데이터 단위 (PDU)는 패킷(packet) 이다. 이더넷이나 무선 LAN에서 만들어진 네트워크를 함께 연결해, 다른 네트워크에 있는 단말과의 연결성을 확보하는 계층이다. 데이터링크 계층에서 만들어진 작은 네트워크를 함께 연결해, 큰 규모의 네트워크를 만든다. 사용되는 프로토콜은 대부분 IP (Internet Protocol) 한 가지 이다.
3.2.4. 전송 계층, 트랜스포트 계층
데이터 단위 (PDU)는 TCP (Transmission Control Protocol) 는 세그먼트(segment) 이고 UDP(User Datagram Protocol) 는 데이터그램(datagram) 이다. '애플리케이션 식별'과 '요구에 맞는 전송제어'를 수행함으로써, 네트워크와 애플리케이션을 연결한다. 네트워크 계층은 다양한 네트워크를 넘어 통신 상대에 패킷이 도달하도록 하는 것까지 책임진다. 설령 네트워크 계층이 프로토콜 덕분에 해외서버에 액세스가 가능하다고 해도, 서버는 받은 패킷을 어느 애플리케이션에 전달해 처리하면 좋을지 알지 못한다.
그래서 전송계층에서는 '포트 번호'라는 숫자를 이용해서 패킷을 전달하는 애플리케이션을 식별한다. 또한, 애플리케이션의 요건에 따라 패킷 송수신량을 제어하거나 전송 도중에 손실된 패킷을 재전송한다. (신뢰성 확립)
주로 사용되는 프로토콜은 UDP(User Datagram Protocol) 또는 TCP (Transmission Control Protocol) 중 하나이다.
데이터그램은 순서 상관없이 데이터를 전달하고, TCP는 패킷을 전달하여 수신받은 곳에서 순서대로 패킷을 조립하므로 애플리케이션이 즉시성(실시간성)을 요구할때는 UDP, 신뢰성을 요구할 때는 TCP를 사용한다.
3.2.5. 세션 계층
애플리케이션 데이터를 통신하기위한 논리 통신로 (세션) 관리하는 계층이다.
3.2.6. 표현 계층, 프레젠테이션 계층
애플리케이션 데이터를 통신 가능한 방식으로 변환하는 계층이다.
3.2.7. 애플리케이션 계층, 응용 계층
네트워크상에서 애플리케이션이 동작하도록 다양한 기능을 제공하는 계층이다.
애플리케이션으로서의 처리를 수행하고 최적적으로 사용자를 연결한다. 패킷을 받은 애플리케이션은 각 애플리케이션이 담당하여 처리한다.
예를들어, 웹브라우저로 웹서버에 연결하는 경우 패킷은 물리계층, 데이터링크계층, 네트워크 계층 프로토콜을 통해 웹서버까지 전송되며, 트랜스포트 계층의 프로토콜에서 HTTP 서버 애플리케이션에 선별되고 애플리케이션 계층의 프로토콜에서 HTTP 서버 애플리케이션을 통해 처리된다.
HTTP (Hypertext Transfer Protocol) , SMTP (Simple Mail Transfer Protocol) , FTP(File Transfer Protocol) 등이 존재한다.
3.3. 두 계층 모델