TCP/IP 프로토콜 개요
1. 인터넷 구성 요소
인터넷을 통해 통신을 수행하는 개체는 크게 호스트와 라우터로 나눌 수 있다.
1) 호스트(Host)
: 최종 사용자의 응용프로그램을 수행하는 주체
2) 라우터 (router)
: 호스트에서 생성된 데이터를 여러 네트워크를 거쳐 전송함으로써
서로 다른 네트워크에 속한 호스트 간에 데이터를 교환할 수 있게 하는 장비
3) 통신 프로토콜
: 호스트, 라우터/ 호스트-호스트 간에 통신을위한 정해진 절차와 방법
2. TCP/IP 프로토콜 구조
1) TCP/IP 프로토콜
- 인터넷의 핵심 프로토콜인 TCP와 IP를 비롯한 각종 프로토콜
- 운영체제의 일부로 구현되며, 응용 프로그램은 운영체제가 제공하는 TCP/IP 프로토콜의 서비스를 사용해 통신한다
- 응용프로그램은 운영체제가 제공하는 TCP/IP 프로토콜의 서비스를 사용해 통신한다.(호스트가 아닌 응용프로그램이 주체)
2) 계측정 구조
- 일반적으로 프로토콜은 기능별로 나누어 계층적으로 구현하는데, TCP/IP프로토콜도 이 구조를 따른다.
1. 네트워크 접근 계층
- 역할 : 네트워크 접근 계층은 물리적 네트워크를 통한 실제 데이터 송수신을 담당한다.
- 구성요소 : 네트워크 하드웨어 + 장치 드라이버
- 네트워크 하드 웨어 : 물리적인 신호를 처리해 데이터를 송수신
- 장치 드라이버 : 운영체제가 제공
- 주소지정 방식 : 물리주소(하드웨어적으로 정의)
- ex) 이더넷 : 48비트 물리주소
2. 인터넷 계층
- 역할 : 네트워크 접근 계층의 도움을 받아 데이터를 목적지 호스트까지 전달
- 구성요소 : IP주소 + 라우킹(or 라우터)
- 주소지정 방식 : IP주소(소프트웨어적으로 정의된 논리주소)
- 전 세계적인 유일성과 하드웨어 독립성을 가짐
- 라우팅 : 데이터를 목적지까지 전달하는 일련의 작업, 절차
- 라우터(라우팅을 담당하는 전용 장비)를 통해 서로 다른 네트워크에 연결된 호스트가 통신
3. 전송 계층
- 역할 : 최종 통신 목적지(응용 프로그램)을 지정하고, 오류 없이 데이터를 전송
- 주소지정 방식 : 포트번호
- 대표 프로토콜 : TCP/ UDP
Port Number : 통신의 최종목적지는 호스트가 아니라 프로세스(응용 프로그램)이다. 따라서 전송 계층에서 프로세스를 지정하는 일련의 주소를 지정, 이를 포트번호라 한다.
4. 응용 계층
- 역할 : 전송 계층을 기반으로 한 다수의 프로토콜과 이 프로토콜을 사용하는 응용 프로그램을 포괄
- 대표 프로토콜 : Telnet, FTP, HTTP, SMTP, ...
소켓을 사용한 네트워크 프로그램이 여기에 속함
3. 데이터 전송 원리
1. 패킷이란
- 각 프로토콜에서 정의한 제어 정보(IP 주소, 포트 번호, 오류 체크 코드 등) + 데이터를 의미
- 제어 정보의 위치에 따라 앞쪽에 붙는 헤더와 뒤쪽에 붙는 트레일러로 구분
궁긍적으로 수신 측 응용 프로그램은 모든 제어 정보가 제거된 데이터만 받는다.
2. IP 주소와 도메인
IP주소
- IP주소는 전세계적으로 유일한 값을 가진다.
- IP주소는 인터넷에 있는 호스트를 유일하게 구별할 수 있지만 통신의 최종 주체인 프로세스는 식별하지 못한다.
- 프로세스 식별자로는 포트번호를 사용하는데, 포트번호는 유일하지 않다.
도메인
- IP주소에 대한(기억하기 쉬운) 별명
- 실제 통신할 때는 IP 주소로 변환해야 함
3. 클라이언트-서버(Client/Server) 모델
- 두 프로그램이 상호 작용하는 방식을 나타내는 용어
- 서비스를 요청하는 쪽은 클라이언트(Client), 클라이언트가 요청하는 서비스를 처리하는 쪽을 서버(Server)라 한다.
4. 소켓
소켓은 전화/ 인터넷은 전화망에 비유할 수 있다.
1. 세 가지 관점
- 데이터 타입
- 통신 종단점
- 네트워크 프로그래밍 인터페이스
2. 데이터 타입
- 파일 디스크립터 혹은 핸들과 유사한 개념이다.
- (일단 만들고 나면 함수를 호출하여 손쉽게 네트워크 통신 수행 가능)
- 프로그래밍 관점에서 소켓은 생성과 설정 과정이 끝나면 운영체제의 통신 관련 정보를 참조해 다양한 작업울 편리하게 할 수 있는 데이터 타입
- 응용 프로그램이 통신하려면 다음과 같은 요소가 결정되어야 한다.
- 사용할 프로토콜(TCP/IP, UDP/IP 등)
- 송신, 수신 측 IP 주소
- 송신, 수신 측 포트 번호
3. 통신 종단점
- 소켓은 응용 프로그램 관점에서 통신종단점, 즉 통신의 출발점과 도착점이라고 간주할 수 있다.
- 크라이언트는 자신의 소켓이 서버 소켓과 연결된 것으로 생각하고 send()함수를 호출하여 데이터를 보낸다.
4. 네트워크 프로그래밍 인터페이스
: TCP/IP 프로토콜의 관점에서 소켓은 네트워크 프로그래밍의 인터페이스에 불과하다.
- 따라서 응용프로그램을 통신하기 위해 양쪽 모두 소켓을 사용해야 하는 것은 아니다.
- 둘다 같은 프로토콜을 사용하고 정해진 형태와 절차에 따라 데이터를 주고받으면 된다.
5. 윈도우 소켓
윈도우 소켓(윈속)
- 버클리 유닉스에서 개발한 네트워크 프로그래밍 인터페이 스를 윈도우 환경에서 사용할 수 있게 만든 것
- 윈도우 95 버전부터 API에 정식으로 포함하여 제공
윈도우 소켓과 유닉스 소켓의 차이점 (크게 의미있는 차이는 아님)
- 윈도우 소켓은 DLL을 통해 대부분의 기능이 제공되므로 DLL 초기화와 종료 작업을 위한 함수가 필요
- 윈도우 프로그램은 대개 GUI를 갖추고 메시지 구동 방식 으로 동작하므로 이를 위한 확장 함수가 존재
- 윈도우는 운영체제 차원에서 멀티스레드를 지원하므로 멀 티스레드 환경에서 안정적으로 동작하는 구조와 이를 위 한 함수가 필요
윈속에서 지원하는 통신 프로토콜
- TCP/IP(윈도우 95 이상, 윈도우 CE 2.1 이상)
- IPv6(윈도우 XP SP1 이상, 윈도우 CE .NET 4.1 이상)
- IrDA(윈도우 98 이상, 모든 윈도우 CE 버전)
- Bluetooth(윈도우 XP SP2 이상, 윈도우 CE .NET 4.0 이상)
윈속의 장점
- 유닉스 소켓과 소스 코드 수준에서 호환성이 높으므로 기 존 코드를 이식하여 활용하기 쉬움
- 가장 널리 사용하는 네트워크 프로그래밍 인터페이스이므 로 한번 배우면 여러 운영체제(윈도우, 리눅스 등)에서 사 용 가능
- TCP/IP 외의 프로토콜도 지원하므로 최소 코드 수정으로 응용 프로그램이 사용할 프로토콜 변경 가능
- 비교적 저수준 프로그래밍 인터페이스이므로 세부 제어가 가능하며 고성능 네트워크 프로그램 개발 가능
윈속의 단점
- 응용 프로그램 수준의 프로토콜을 프로그래머가 직접 설 계해야 함
- -> 주고받는 데이터 형식이나 전송 절차 등을 고려해 프로그래 밍해야 하며, 설계 변경 시에는 코드 수정이 불가피함
- 서로 다른 바이트 정렬 방식을 사용하거나 데이터 처리 단 위가 서로 다른 호스트끼리 통신할 경우, 응용 프로그램 수준에서 데이터 변환을 처리해야 함
원속(윈도우 소켓) 구조
'TCP-IP 윈도우 소켓 프로그래밍' 카테고리의 다른 글
[TCP/IP] 6장. 멀티 스레드 (0) | 2021.04.26 |
---|---|
[TCP/IP] 5장. 데이터 전송하기 (0) | 2021.04.14 |
[TCP/IP] 4장. TCP 서버- 클라이언트 (0) | 2021.04.09 |
[TCP/IP] 3장. 소켓 주소 구조체 다루 (0) | 2021.04.09 |
[TCP/IP] 2장. 윈도우 소켓 시작하기 (0) | 2021.04.07 |