본문 바로가기

IT/network

[네트워크] 프로토콜과 TCP/IP

프로토콜이란?

서로 다른 시스템에 있는 개체 간에 성공정으로 데이터를 전송하는 통신 규약
(네트워크에 연결된 컴퓨터들끼리 데이터를 주고받을 수 있도록 미리 약속한 전송 규약 및 규칙)

프로토콜은 계층적 구조로 정의되어 있고, 계층별 역할이 구분됨

 

<OSI 7 Layer>

예를 들어서 인터넷을 이용한다고 하면

인터넷의 기본 프로토콜 - TCP/IP

원하는 웹사이트의 웹페이지를 볼 수 있는 - HTTP

메일을 주고 받을 시 - SMTP, POP3

인터넷으로 데이터나 파일의 업로드, 혹은 다운로드 시 - FTP

등의 프로토콜이 사용된다.

 

프로토콜이 필요한 이유는 무엇인가?

사용자 별로 환경이 다르고 통신의 규칙이 없으면 충돌, 지연 등 여러가지 문제가 발생할 수 있기 때문이다.

 

예를 들어 한쪽은 맥북(Linux 기반)을 사용하고, 다른 한쪽은 Windows 기반의 삼성 컴퓨터를 사용한다고 하자.

두 컴퓨터의 환경이 다르기 때문에 중간에 규약을 지정해주지 않는다면 서로 제멋대로 데이터를 요청하거나 전송할 것이다.

이를 방지하기 위해 프로토콜(통신 규약)을 만듦으로써 사전에 발생할 수 있는 여러가지 문제들(통신 순서, 오류 제어 및 수정 등)을 해결할 수 있다.

 

인터넷 표준 프로토콜(TCP/IP)

TCP/IP(Transmission Control Protocol/Internet Protocol) = 전송 제어 및 인터넷 프로토콜

FTP(File Transfer Protocol) = 파일 전송 프로토콜

Telnet = 원격 로그인

SMTP(Simple Mail Transfer Protocol) = 이메일

<TCP/IP Model>

TCP/IP는 TCP/IP를 지원하는 소프트웨어만 있으면 아무런 문제 없이 다른 기종의 컴퓨터와 통신할 수 있다.

TCP/IP 프로토콜은 네트워크 접속 계층(Network Access), 네트워크 계층(Internet), 전송 계층(Transport), 응용 계층(Application)으로 구분된다.

 

1) 네트워크 접속 계층(Network Access)

- 운영체제의 네트워크 카드와 디바이스 드라이버 등 하드웨어적인 요소와 관련된 모든 것을 지원하는 계층

- 데이터 링크 계층의 역할을 하는 TCP/IP 프로토콜에는 Ethernet, 802.11x, MAC/LLC, SLIP, PPP 등이 있음

- 네트워크 접속 계층의 송신 측 컴퓨터는 상위 계층으로부터 받은 패킷에 물리 주소인 MAC 주소를 헤더에 추가하여 프레임을 만든 뒤 하위 계층인 물리 계층에 전달함

- 수신 측 컴퓨터는 데이터 링크 계층에서 추가한 헤더 제거 후 상위 계층인 네트워크 계층에 전달

- 이 때, 프레임의 크기는 네트워크 토폴로지가 결정

 

2) 네트워크 계층(Internet)

- 네트워크 패킷 전송 제어

- IP, ARP(Address Resolution Protocol), ICMP(Internet Control Message Protocol), IGMP(Internet Group Management Protocol) <- 전부 중요한 것들, 꼭 알아두는 것을 추천

- IP는 네트워크의 주소 체계를 관리하고 데이터그램을 정의하며 전송에 필요한 경로를 결정

- 네트워크 계층의 역할은 데이터그램(IP 프로토콜에서 다루는 패킷 데이터)을 정확한 수신지로 전송하는 것

- 데이터그램에 있는 정보는 송신지 주소, 수신지 주소, 보내는 데이터, 몇 가지 제어 필드 등

 

3) 전송 계층(Transport)

- 호스트 간의 데이터 전송을 담당하는 계층으로 TCP, UDP(User Datagram Protocol)

- TCP는 전송되는 패킷에 오류와 중복이 없게 하고, 보낸 순서대로 상대편이 받을 수 있도록 신뢰성 있는 데이터 전송을 보장하는 프로토콜

- 때문에 신뢰성 보장을 위해 헤더 안에는 오류 코드에 대응할 수 있는 각종 정보가 들어있음

- TCP는 패킷을 정확히 전송하기 위해 패킷 헤더 부분에 일련번호 등을 추가하여 보내지만 UDP는 정확한 패킷 전송을 보장하지 않기 때문에 패킷 헤더 부분에 추가 정보가 없음

- TCP는 전송되지 않은 패킷이 있으면 재전송하기 때문에 원본 데이터와 일치하는 데이터 재결합 가능

- 전송된 패킷의 도착 순서가 바뀌어도 패킷의 일련번호를 이용하여 원본과 일치하는 데이터를 받을 수 있음

- UDP는 전송되지 않은 패킷이 있어도 이를 무시하고 패킷이 도착하는 순서대로 데이터를 재결합하기 때문에 원본과 일치하는 데이터의 재결합을 보장하지 않음

 

4) 응용 계층(Application)

- FTP, SMTP, SNMP(Simple Network Management Protocol : 네트워크 관리)

- 웹 브라우저(인터넷 익스플로러, 크롬 등)나 인터넷 메일 프로그램(아웃룩 익스프레스 등)이 해당됨

- TCP/IP 프로토콜을 지원하려면 서버 컴퓨터에 프로토콜을 서버 형태로 서비스하는 데몬(Daemon)이라는 프로그램이 있어야 함

 

TCP/IP 구조

<TCP/IP Frame Structure>

<물리 주소 + 인터넷 주소 + 포트 주소> 로 구성됨

1) 물리  주소

- MAC 주소를 의미하며 이더넷 네트워크 인터페이스 카드(NIC 카드)의 6바이트(48비트)를 의미

- MAC 주소는 고유식별번호로 전세계에 하나밖에 존재하지 않음

- 실행 - cmd - ipconfig/all을 통해 확인 가능함

- 프레임에서 사용됨

 

2) 인터넷 주소

- IP주소를 의미하며, 168.32.133.12 와 같은 형태의 주소를 의미함(우리가 아는 IP주소가 이에 해당)

 

3) 포트 주소

<Port Address>

- 하나의 컴퓨터에서 여러 대의 컴퓨터와 통신하고 있는 경우, 동시 발생하는 프로세스 처리를 위해 프로세스들을 식별하기 위한 방법이 필요한데 포트 주소를 통해 해결

- TCP/IP 구조에서는 포트 주소를 사용하여 이를 식별하며, TCP/IP의 포트 주소 길이는 16비트