[TCP/IP] #1-1. TCP/IP 프로토콜 개요
소켓 프로그래밍에 필요한 핵심 내용을 알아본다.
TCP/IP 프로토콜 구조
- 인터넷을 통해 통신을 수행하는 개체는 크게 호스트와 라우터로 나뉜다.
- 호스트(Host)
- 최종 사용자(End-user)의 응용 프로그램을 수행하는 주체
- 인터넷에 연결된 PC, 노트북, 스마트폰, 태블릿
- 라우터(Router)
- 호스트에서 생성된 데이터를 여러 네트워크를 거쳐 전송함으로써 서로 다른 네트워크에 속한 호스트 간에 데이터를 교환할 수 있도록 하는 장비
- 호스트(Host)
- 통신 프로토콜(Communication Protocol)
- 호스트-라우터, 라우터-라우터, 호스트-호스트이 통신하기 위한 절차와 방법
- TCP/IP 프로토콜
- 인터넷에서 사용하는 핵심 프로토콜은 TCP와 IP인데, 이와 각종 프로토콜을 총칭하여 TCP/IP 프로토콜이라고 부른다.
- 운영체제의 일부로 구현되어 제공, 응용 프로그램은 이 프로토콜 서비스를 사용하여 통신한다.
- 통신 수행 주체이자 통신의 최종 목적지는 호스트에서 수행하는 응용 프로그램(호스트 X)
- 프로토콜은 통신을 위한 다양한 요구 사항 중 일부/전체 기능을 제공한다.
- 예. 통신 대상 지정, 전송 오류 확인, 오류시 재전송, 데이터 순서 관계 유지 등
- 네트워크 접근 계층(Network Access Layer)
- 물리적 네트워크를 통한 실제 데이터 송수신을 담당
- 구성 요소
- 물리적 신호를 처리하여 데이터를 송수신하는 네트워크 하드웨어
- 운영체제가 제공하는 장치 드라이버
- 하드웨어적으로 정의된 물리적 주소(Physical Address)로 통신한다.
- 물리적 주소는 네트워크 방식에 따라 다르고 일반적으로 상호 호환되지 않는다.
- 인터넷 계층(Internet Layer)
- 네트워크 접근 계층의 도움을 받아 데이터를 목적지 호스트까지 전달하는 역할
- 하드웨어적으로 물리적 주소 대신 소프트 웨어적으로 정의된 논리적 주소 IP 주소(Internet Protocol Address)를 사용한다.
- IP 주소
- 물리적 주소와 무관한 단일 주소 지정 방식으로, 통신에 참여하는 개체 각각에 유일성을 지정하여 제공한다.
- 라우팅(Routing)
- 데이터를 목적지까지 전달하는 일련의 작업
- 라우터(Router)를 통해 서로 다른 네트워크에 연결된 호스트가 통신할 수 있다.
- 전송 계층(Transport Layer)
- 최종 통신 목적지를 지정하고 오류 없이 데이터를 전송하는 역할로 포트 번호를 사용한다.
- 포트 번호(Port Number)
- 통신의 최종 목적지인 호스트에서 실행되는 프로세스(응용 프로그램)를 지정하는 16비트 주소를 사용한다.
- 인터넷 계층의 IP가 제공하는 전송 서비스는 최선을 다하지만(Best-effort) 신뢰성이 없다(Unreliable).
- 전송 계층은 데이터 손실/손상을 검출하여 잘못된 데이터가 목적지에 전달되지 않도록 한다.
- 전송 계층에 해당하는 인터넷 프로토콜
- TCP(Transmission Control Protocol)
- 연결형 프로토콜: 연결 설정 후 통신 가능
- 신뢰성 있는 데이터 전송: 필요시 데이터 재전송
- 일대일 통신(Unicast)
- 데이터 경계 구분 안 함: 바이트 스트림(Byte-Stream) 서비스
- UDP(User Datagram Protocol)
- 비연결형 프로토콜: 연결 설정 없이 통신 가능
- 신뢰성 없는 데이터 전송: 데이터 재전송하지 않음
- 일대일 통신(Unicast), 일대다 통신(Broadcast, Multicast)
- 데이터 경계 구분함: 데이터그램(Datagram) 서비스
- TCP(Transmission Control Protocol)
- 응용 계층(Application Layer)
- 전송 계층을 기반으로 하는 다수의 프로토콜과 이 프로토콜을 사용하는 응용 프로그램을 포괄한다.
데이터 전송 원리
- 데이터를 송수신하기 위해선 각 프로토콜에서 정의한 제어 정보가 필요하다.
- 패킷(Packet)
제어 정보(헤더와 트레일러) + 데이터
형태로 전송된다.- 송신시: 응용 프로그램 → TCP → IP → 이더넷 계층을 지나며 헤더와 트레일러가 붙는다.
- 수신사: 이더넷 → IP → TCP → 응용 프로그램 계층을 거치며 헤더와 트레일러가 제거되어 최종적으로 데이터가 전달된다.
IP 주소, 포트 번호
- TCP/IP 프로토콜을 사용하여 통신할 때는 IP 주소와 포트 번호를 사용한다.
- IP 주소
- IPv4(IP 버전 4) - 32비트,
.
로 구분하여 10진수 4개로 표현- 예. 147.46.114.70
- IPv6(IP 버전 6) - 128비트,
:
으로 구분하여 16진수 8개로 표현- 예. 2001:0230:abcd:ffab:0023:eb00:ffff:1111
- 폐쇄된 네트워크, IP 공유하는 경우가 아니라면 IP 주소는 전 세계적으로 값이 유일하다.
- 인터넷에 있는 호스트를 유일하게 구별할 수 있지만, 통신의 최종 주체인 프로세스를 식별할 수 없다.
- 도메인 이름(Domain Name)
- IP 주소에 대한 별명(기억하기 쉽도록)으로, 실제 통신시에 IP 주소로 변환해야 한다.
- IPv4(IP 버전 4) - 32비트,
- 포트 번호
- 통신의 종착점(하나 or 여러 프로세스)을 나타내는 번호로 16비트
- 부호 없는 16비트 정수로
0~65535
범위 - 일반적으로 응용 서버 작성 시
1024~49151
범위에서 사용하는 것이 바람직하다.
- IP 주소
클라이언트-서버 모델
- 클라이언트-서버 모델(Client-Server Model)
- 클라이언트: 서비스를 요청하는 쪽
- 서버: 클라이언트가 요청한 서비스를 처리하는 쪽
- 동시 접속 모델의 타이밍 문제를 해결한다.
- 서버가 먼저 실행하여 대기하고 있다가 클라이언트가 서버에 접속한다.
Leave a comment