Network - 2. TCP/IP
1. 들어가며
TCP/IP는 면접 문제에 자주 출제될 정도로 네트워크에서는 중요한 부분이다. 통신 기기들은 어떻게 연결되어 있는지, 인터넷상에서 정보들이 교환되는 방식은 무엇인지, 기타등등에 대해 알아보자.
2. TCP/IP 정의
-
TCP/IP(Transmission Control Protocol / Internet Protocol)는 인터넷상에서의 네트워크를 상호 연결시켜 정보를 전송할 수 있도록 하는 기능을 가진 다수의 프로토콜이 모여 있는 프로토콜의 집합이라고 정의할 수 있다. 즉, 컴퓨터와 컴퓨터간의 지역네트워크(LAN) 혹은 광역네트워크(WAN)에서 원할한 통신을 가능하도록 하기 위한 통신규약(Protocol)이다.
-
인터넷의 등장으로 TCP/IP는 대중적으로 널리 퍼지게 되었다. 가장 인기있는 인터넷 서비스인 WWW, EMAIL, TELNET, FTP등 대부분이 TCP/IP 기반에서 만들어져있다. 인터넷으로 연결된 수많은 컴퓨터와 통신을 위해서 TCP/IP를 선택한 이유는 그 개방성에 있다. 즉 하드웨어, 운영체제, 접속매체에 관계없이 동작할수 있다는점때문에, 인터넷 통신을 위한 핵심으로 선택되었다. 현재는 수천만대의 컴퓨터가 인터넷을 통하여 거미줄처럼 연결되어 있다.
-
TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP (인터넷 프로토콜)와 전송 조절 프로토콜인 TCP (전송 제어 프로토콜)로 이루어져 있다. IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다.(unreliable datagram service) TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다. HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 동작하기 때문에, 묶어서 TCP/IP로 부르기도 한다.
3. OSI-7-Layers VS TCP/IP
- 국제표준화기구(ISO)에서 1984년에 발표한 OSI(Open Systems Interconnection Reference Model)모델은 총 7단계를 가지고 있다. 이는 통신이 일어나는 과정을 7단계로 나누어 한눈에 보기 쉽고 트레픽의 흐름을 잘 파악하기 위하여 설계되었다. 위의 그림은 OSI 7 Layers와 그에 상응하는 TCP/IP Layers를 알려준다. OSI-7-Layers에 대한 자세한 내용은 Network - 1. Protocol & Layers 를 참고하도록 하자.
4. TCP/IP 계층
- 네트워크 엑세스 계층(Network or Link Layer): 통신망 접근을 할 수 있는 프로토콜 흐름제어하고 에러 서비스 제어를 제공한다.
- 1.1 IEEE(Institute of Electrical and Electronics Engineering) 802 규격
- IEEE 802.3 : CSMA/CD(충돌방지 및 확인하는 방식)를 사용하는 Ethernet LAN 규격
- IEEE 802.4 : 토큰버스(Token Bus) 방식의 LAN 규격
- IEEE 802.5 : 토큰링(Token Ring) 방식의 LAN 규격
- 1.2 X.25 규격 : 패킷망에서 패킷형 단말기를 위한 DTE와 DCE 사이의 접속 규명으로 사용자 단말장치와 패킷교환망 간의 데이터 교환 절차를 정의하는것이다.
- 1.3 Ethernet 규격 : LAN(근거리)에서 대표적인 버스구조 방식으로 CSMA/CD를 사용한다.
- 1.1 IEEE(Institute of Electrical and Electronics Engineering) 802 규격
- 인터넷계층(IP Layer): 비연결형 네트워크 프로토콜, IP(Internet Protocol)계층으로, 데이터를 전송하기 위한 절차와 순서를 제어한다. 전송경로를 논리적으로 관리하고 주소를 지정하며, 패킷을 단편화(쪼개기)하거나 재조립한다. 또한 오류제어와 흐름제어도 담당하고 있다.
- 2.1 ARP(Address Resolution Protocol): IP의 논리적인 호스트와 물리적인 주소(LAN Card 주소)를 구할 수 있는 프로토콜이다. 예) 논리적인 주소는 영화티켓에 적혀있는 자리이고, 물리적인 주소는 영화관 실제 자리 주소를 뜻한다.
- 2.2 RARP(Reverse Address Resolution Protocol): 호스트의 물리적인 주소로, 논리적인 IP주소를 구할 수 있도록하는 프로토콜이다. 목적네트워크에 도착한 IP패킷은 브로드캐스트 주소를 이용해서 해당 IP 주소를 갖고 있는 컴퓨터를 찾아서 접근한다. 예) 영화관에 자리에 앉았는데 알고보니 ‘F열 42’이다. 이걸 통해 영화티켓에 ‘F열 42’를 적는다.
- 2.3 ICMP(Internet Control Message Protocol): 호스트와 게이트웨이 사이의 메세지를 제어하고 데이터오류를 알려주는 프로토콜이다.
- 2.4 IGMP(Interget Group Management Protocol): 멀티캐스트 그룹을 인근 라우터들에게 알리는 수단을 제공하는 프로토콜이다. 자신이 IGMP 메시지에 표시된 멀티캐스트 주소의 멤버임을 다른 호스트와 라우터에 알리기 위한 용도로 IGMP를 사용한다.
- 2.5 DNS(Domain Name System): 도메인 명을 실제 서버 시스템을 찾기 위한 숫자체계의 IP주소롤 변환한다.
- 2.6 DHCP(Dynamic Host Configuration Protocol): DHCP를 사용하면 네트워크에 연결되어 있는 컴퓨터가 시동될때 DHCP서버로 부터 IP주소와 구성매개 변수를 동적으로 할당받아 자동으로 TCP/IP 설정이 이루어진다. 즉 IP주소를 필요함에따라 지정하고 반환하고 돌려쓰는 것을 의미한다.
- 트렌스포트계층(TCP Layer): 호스트들 간의 신뢰있는 통신을 제공하며 연결지향 프로토콜이다. 패킷 수신여부를 확인하고 중복패킷에 대한 처리를 담당한다.
- 3.1 UDP(User Datagram Protocol): 비연결형 프로토콜로 패킷이 전송될때마다 경로가 바뀔 수 있다. 신뢰성이 중요하지 않고 효율적으로 통신을할때 사용하는것이 적합하다. 예)스트리밍 분야나 VoIP, mVoIP, 게임, 데이터의 빠른 전송이 필요한 곳, 한 번에 작은 양의 데이터를 전송하는 애플리케이션
- 3.2 RTP(Real-time Transport Protocol): 실시간 데이터 송신 전송을 담당하는 UDP 기반의 프로토콜이다. 예)네트워크상에서 라디오나 비디오
- 응용계층(Application Layer): 응용 프로그램간의 데이터 송수신을 제공하고 담당한다.
- 4.1 SMTP(Simple Mail Transfer Protocol): 이메일 서비르 전송 프로토콜이다.
- 4.2 HTTP(Hyper Text Transfer Protocol): 기본 문자, 동영상, 그림을 상호 유기적으로 결합하여 연결하는 방법을 제공하 프로토콜이다.
- 4.3 FTP(File Transfer Protocol): 컴퓨터간 혹은 컴퓨터와 인터넷간의 파일교환 서비스를 지원하는 프로토콜이다.
- 4.4 Telnet: 멀리 떨어진 호스트에 원격 접속하여 사용할 수 있는 가상터미널 서비스 프로토콜이다.
- 4.5 NTP(Network Time Protocol): 인터넷에서 시간을 맞추거나 컴퓨터 시스템들 간 시간 동기화를 위한 네트워크 프로토콜이다. 예) 서로 접속이나 데이터를 주고받기위해 상태를 같게끔 만드는것
5. TCP VS UDP 비교
6. 마치며
아직 가야할 길이 멀다. IPv4 Header의 주요 기능, TC Three-Way Handshake-TCP 연결 구조, 등등 체크아웃 해야할 것들이 무궁무진하다. 네트워크의 기본과 응용에 대해 꾸준히 알아가보자.
reference
[Image-of-Network-Main/google-Image]
[Image-of-Network-TCP-IP-Level-Example/jkkang]
[Network-TCP-IP-Definition/cloudflare]
[Network-TCP-IP-General-Idea/searchnetworking]
[Difference-TCP-UDP-Example/tistory/Jhkang-tech]