TCP/IP란?

TCP/IP

인터넷 프로그램들이 서로 통신을 하는데 있어서 HTTP, SFTP, FTP 등 다양한 프로토콜이 있습니다. 인터넷 프로토콜에서 가장 많이 사용하는 대표적인 프로토콜은 여러분들도 많이 아시다시피 IP입니다. 여기서 중요한 것은 TCP/IP는 계층이 아니라 프로토콜이라는 점 입니다.
TCP/IP는 OSI7 계층과는 조금은 다른 TCP/IP의 구조적인 계층 위에서 동작합니다
tcp/ip
OSI7 계층과는 조금은 다른 모습입니다.
계층의 갯수 부터가 다르고. OSI는 7계층인데 반해 TCP/IP 계층은 4계층이 전부라는 것을 알 수 있습니다.

1. 네트워크 인터페이스 계층 (Network Interface Layer)

이 계층은 Node-To-Node간의 신뢰성 있는 데이터 전송을 담당하는 계층입니다.
OSI7 계층의 물리 계층과 데이터링크 계층의 역할을 이 네트워크 인터페이스 계층이 담당합니다.
따라서 MAC주소가 이 계층에서 사용됩니다.
네트워크 인터페이스 계층이 바로 데이터링크 계층까지 담당하니까 MAC 어드레스가 사용됩니다.
랜카드
위의 장비는 랜카드 입니다. 정확한 명칭은 NIC라고 하여 Network Interface Card입니다.
바로 이 랜카드가 있어야만 네트워크 통신을 할 수 있는데, 네트워크 인터페이스 계층에서 동작하는 장비입니다.

LAN상에서는 Ethernet, TokenRing, FDDI 등이 있으며 WAN 상에서는 X.25, Frame Relay, PPP 등이 있습니다.

2. 인터넷 계층 (Internet Layer)

OSI7계층의 네트워크 계층을 담당하는 계층입니다. OSI7 계층처럼 호스트간의 라우팅을 담당하게 됩니다.
인터넷 계층에서 동작하는 프로토콜에는 아래와 같습니다.

  • IP(Internet Protocol) : 비신뢰성, 비연결지향 데이터그램 프로토콜

  • ARP(Address Resolution Protocol) : 주소변환 프로토콜입니다. IP주소를 MAC주소로 변환하는 프로토콜

  • RARP(Reverse ARP) : 반대로 MAC주소로 IP주소를 찾는 프로토콜

  • ICMP(Internet Control Message Protocol) : 상태 진단 메시지 프로토콜. 이 프로토콜을 이용하는 대표적인 프로그램이 ping

  • IGMP(Internet Group Message Protocol) : 멀티캐스트용 프로토콜

3. 전송 계층 (Transport Layer)

OSI7 계층의 전송계층과 같습니다. 프로세스간의 신뢰성 있는 데이터 전송을 담당하는 계층입니다.
process-to-process 전송을 담당하기 위해서는 논리적 주소가 필요한데 process가 사용하는 포트 번호를 그 논리적 주소로 사용합니다.
전송 계층에서 동작하는 프로토콜은 아래와 같습니다.

  • TCP (Transmission Control Protocol) : 신뢰성있는 연결지향형 프로토콜. 신뢰성있다는 말은 그 페킷에 대한 오류처리나 재전송따위로 에러를 복구하는 것을 말합니다. 그때문에 TCP의 헤더에 붙는 정보가 많습니다.

  • UDP (User Datagram Protocol) : 비신뢰성 비연결형 프로토콜입니다. 페킷을 잃거나 오류가 있어도 대처하지 않는 것을 말합니다. 따라서 UDP헤더는 간단한 구조를 갖고 있습니다.

4. 응용 계층 (Application Layer)

사용자와 가장 가까운 계층입니다. OSI7계층의 5계층부터 7계층까지의 기능을 담당하고 있습니다.
서버나 클라이언트 응용 프로그램이 이 계층에서 동작합니다. 우리가 알고 있는 브라우저나 텔넷같은 서비스가 이 계층에 동작하며, 동작하기 위해서는 전송계층의 주소, 즉 포트번호를 사용합니다. 예를들어 http가 88번 포트를 사용하는 것과 같습니다.
응용 계층에서 동작한느 프로토콜은 아래와 같습니다.

  • HTTP (Hyper-Text Transfer Protocol) : TCP기반의 프로토콜로 포트번호 80번을 사용

  • Telnet : TCP 포트번호 23번을 사용합니다. 원격 터미널을 접속할때 이 포로토콜을 사용

  • SSH (Secure Shell) : 텔넷과 같은 서비스는 보안에 취약. 비밀번호가 암호화되지 않아 그대로 노출됩니다.. 이것을 보완한것이 SSH입니다. 포트번호 22번을 사용합니다. SFTP 같은 프로토콜도 22번 포트로 주요 사용합니다.

  • FTP(File Transfer Protocol) : 파일 전송 프로토콜. 파일을 받거나 올릴때 FTP를 사용. FTP는 파일을 올리거나 내려받을때 신뢰성을 중요시하기 때문에 TCP에서 동작합니다. 2개의 포트를 사용합니다.

TCP 포트 20번은 데이터 전송을 위한 용도, TCP 포트 21번은 제어용으로 사용합니다.

  • SMTP (Simple Mail Transfer Protocol) : 메일 전송 프로토콜입니다. TCP 상에서 동작하며 포트는 25번을 사용합니다.

  • POP3 (Post Office Protocol Version3) : 메일 수신용 프로토콜입니다. 아웃룩같은 프로그램이 POP3라는 프로토콜을 사용하여 동작합니다. TCP 포트 110번을 사용합니다.

  • DNS (Domain Name System) : 도메인명에 대한 호스트 정보를 제공해줍니다. 기본적으로 UDP상에서 동작합니다. 기본적으로 실패하면 다시 한번 요청하면 되며 그렇게 중요한 정보가 아니기 때문이죠. 하지만 신뢰성을 요할 경우에는 TCP상에서도 동작합니다. 데이터의 길이가 길 경우같은 때 TCP 기반으로 동작할 수 있습니다.

UDP, TCP 포트 53번을 사용합니다.

이와 같이 포트번호가 특정 프로토콜이 사용해서 우리가 쓸 수 없는 포트들이 있습니다. 이런 포트들을 well-known port라고 합니다.

Share