IP란
IP(Internet Protocol)은 데이터를 전달하는 방법을 정의하는 프로토콜입니다. 데이터를 보내고 받는 주소를 할당하고 데이터를 목적지까지 전달하기 위해서 사용됩니다.
IP 주소는 네트워크 상에서 각 기기를 식별하는 고유한 숫자 조합입니다.
TCP란
TCP(Transmission Control Protocol)은 데이터를 안전하고 순서대로 전달하기 위한 프로토콜입니다. 데이터의 분할과 재조립, 오류 검출 및 수정, 흐름 제어 등의 기능을 제공합니다.
TCP/IP 모델
TCP/IP는 인터넷에서 쓰이는 프로토콜의 모임으로 The Internet Protocol Suite라고도 불립니다. HTTP/TCP/IP 등의 프로토콜들이 TCP/IP 모델에 속합니다.
TCP/IP 모델은 인터넷과 대부분의 네트워크에서 데이터를 어떻게 전송하는지 설명하는 네트워크 모델입니다. TCP/IP 모델은 네 개의 계층으로 구성되어 있으며, 각각의 계층은 특정한 기능을 담당합니다.
OSI 7계층과 TCP/IP 모델의 차이점
OSI 모델과 TCP/IP 모델 모두 네트워크 통신을 이해 및 설계하기 위한 개념적 프레임워크이나 두 모델 간에는 차이점이 존재합니다.
1. 계층의 수와 구조
OSI 모델은 7 계층으로 이루어져 있고 TCP/IP 모델은 4 계층으로 이루어져 있습니다. OSI 모델은 모든 계층을 세밀하게 구분하고 각 계층의 역할을 명확히 정의한 반면 TCP/IP 모델은 실질적, 실용적 접근을 위해 여러 계층을 통합하여 네 개의 계층으로 단순화했습니다.
2. 설계 목적
OSI 모델은 네트워크 통신의 표준화를 위한 이론적인 참조 모델입니다. OSI 모델은 통신 시스템 표준화, 새로운 프로토콜 개발에 초점을 둔 모델입니다.
TCP/IP 모델은 인터넷 통신의 실질적인 구현을 위해 설계되었습니다. 인터넷의 발전과 함께 자연스럽게 형성된 모델이며, 실제 인터넷 통신에 사용되는 프로토콜의 집합을 기반으로 합니다. OSI 모델은 교육 목적이나 표준을 제시하기 위해 사용되며, 오늘날 실제로 더 많이 참고하고 사용되는 것은 TCP/IP 모델입니다.
TCP/IP 모델의 각 계층
네트워크 인터페이스 계층(Network Interface Layer)
데이터를 실제 물리적인 네트워크를 통해 전송하는 일을 담당하는 계층입니다. OSI 계층의 물리, 데이터 링크 계층의 역할을 포함합니다. 데이터가 실제 케이블, 와이파이 등 물리적 매체를 통해 이동하는 방법을 정의합니다.
이더넷(네트워크 카드), Wi-Fi를 통해 데이터를 전송받는 것이 해당 계층에 해당합니다.
인터넷 계층(Internet Layer)
데이터 전송 시에 목적지 주소 IP를 통해 패킷을 적절한 경로로 라우팅하는 일을 담당하는 계층입니다. 데이터가 네트워크를 통해 올바른 목적지에 도달하도록 경로를 설정하고 IP 주소를 사용해 데이터의 출발지와 목적지를 식별합니다.
IP(Internet Protocol), ICMP(Internet Control Message Protocol)이 해당 계층에 해당합니다.
👆🤓라우팅: 네트워크 간 통신에서 IP 주소를 사용하여 데이터 패킷의 가장 효율적인 송신 경로를 찾아주는 것
전송 계층(Transport Layer)
데이터 전송의 신뢰성을 보장하고, 데이터 흐름을 관리하며 에러가 발생하면 복구합니다. 즉 데이터의 신뢰성 있는 전송을 보장하는 계층입니다. 전송 계층에서는 데이터를 여러 개의 세그먼트로 나누고, 데이터가 손실되거나 손상될 시 재전송하는 작업을 수행합니다.
데이터가 순서대로 정확하게 도착할 수 있도록 신뢰성을 보장하는 연결 지향 프로토콜 TCP(Transmission Control Protocol),
데이터 전송 속도를 우선시하는 UDP(User Datagram Protocol)가 전송 계층에 해당합니다.
응용 계층(Application Layer)
최종 사용자가 네트워크를 통해 데이터를 주고 받을 수 있도록 응용 프로그램과 상호작용 하는 계층입니다. 실제로 사용자가 네트워크를 통해 수행하는 작업과 직접적으로 연관 있는 계층입니다. 우리가 흔히 실생활에서 접하는 웹 브라우징, 이메일 전송, 파일 다운로드 등이 응용 계층이 담당하는 작업에 포함됩니다.
HTTP(Hypertext Transfer Protocol), FTP(File Transfer Protocol), SMTP(Simple Mail Transfer Protocol), DNS(Domain Name System)이 응용 계층에 해당합니다.
브라우저에 www.google.com을 입력하면?
1. HTTP request를 구글 웹서버의 80번 포트로 보냅니다.
2. 요청을 인터넷을 통해 구글서버로 전달하기 위해 패킷을 만듭니다. 이 때 패킷에는 각 계층(Application Layer, Transport Layer... 등)에 필요한 정보들이 담깁니다.
3. 패킷의 Application Layer에는 HTTP Request가 들어갑니다.
4. 패킷의 Transport Layer에는 TCP 패킷의 TCP 헤더에 SP(Source port), DP(Destination port)가 필요합니다. 시작 포트번호는 내 컴퓨터에서 만든 소켓의 포트번호가 들어가고, 목적지 포트번호는 웹서버의 웰 노운 포트번호인 80번이 들어갑니다.
5. 패킷의 Internet Layer에는 IPv4 패킷의 IP 헤더에 SA(Source IP Address), DA(Destination IP Address)가 필요합니다. 시작 IP 주소는 나의 IP 주소가 들어가지만, 목적지의 IP 주소(현재 알고 있는 것은 google.com 뿐)는 아직 모르기 때문에 DNS 프로토콜을 통해서 도메인 정보로 IP 주소를 알아와야 합니다.
5-1. 브라우저가 OS에게 google.com 도메인에 대한 IP를 요청하면 OS는 DNS 서버로 요청을 보냅니다(이 때 DNS 서버 주소는 OS에 이미 등록이 되어 있습니다).
6. 패킷의 Network Access Layer에서는 Ethernet 프로토콜에 대한 헤더가 필요합니다. 이 때 source의 MAC 주소와 Destination의 MAC 주소가 필요한데, 마찬가지로 Destination의 MAC 주소는 우리가 모르는 상황입니다.
IP 주소는 알고 있기 때문에, IP 주소를 MAC 주소로 해석해 주는 주소해석 프로토콜인 ARP 프로토콜을 사용합니다.
7. 이제 패킷의 전송 준비가 모두 끝났고 TCP 프로토콜을 사용하기 위해 송신 측과 수신 측을 연결해 주는 3-Way-Handshaking 작업을 진행해 줍니다.
References
https://www.youtube.com/watch?v=BEK354TRgZ8
'CS' 카테고리의 다른 글
[CS] OSI 7계층(OSI Model) (0) | 2024.08.16 |
---|---|
[CS] BSD 소켓(Socket) (0) | 2024.08.16 |
[C언어] GCC(GNU Compiler Collection) (1) | 2024.07.26 |
[CS] 가상화(Virtualization) (3) | 2024.07.26 |
[C언어] 포인터(Pointer) (1) | 2024.07.25 |