AngelPlayer`s Diary

TCP/IP 프로토콜 구조

인터넷 통신 객체 : 호스트, 라우터

- 호스트 : 최종 사용자 응용 프로그램을 수행하는 주체

 

- 라우터 : 호스트에서 생성된 데이터를 여러 네트워크를 거쳐 전송하여, 서로 다른 네트워크에 속한 호스트 간 통신을 하게 해주는 장치

 

 

통신 프로토콜 : 라우터와 라우터, 호스트와 라우터, 호스토와 호스트 등의 통신을 위한 절차와 방법

 

TCP/IP 프로토콜 : 인터넷에서 사용하는 TCP, IP와 연관된 각종 프로토콜의 총칭, 운영체제의 일부로 구현

 

 

 

TCP/IP 프로토콜 구조

응용 계층 - 전송 계층 - 인터넷 계층 - 네트워크 엑세스 계층

 

- 네트워크 엑세스(접근) 계층

물리적 네트워크를 통한 실제 데이터 송수신을 담당

네트워크 하드웨어(데이터 송수신에 사용), 장치 드라이브로 구성

하드웨어적으로 정의된 물리 주소를 사용하여 통신 (cf. 이더넷에서 48비트 물리 주소 사용)

 

 

- 인터넷 계층

네트워크 접근 계층의 도움을 받아 데이터를 목적지 호스트까지 전달하는 역할

-> IP주소와 라우팅을 이용해 목적지 호스트에 데이터가 도달하게 함

 

소프트웨어적으로 정의된 논리 주소인 IP주소를 사용함

-> IP주소는 물리 주소와 별개로 정의하며, 전세계적으로 유일성을 보장함

 

라우팅 : 전송경로를 결정하고 그에 따라 데이터를 전달하는 절차

라우팅을 담당하는 전용 장비를 라우터라고 하며, 라우터를 통해 다른 네트워크에 연결된 호스트 간 통신

 

 

- 전송 계층

최종 통신 목적지를 지정하고 오류 없이 데이터를 전송하는 역할

인터넷 계층은 호스트까지만 전달하지만, 최종 통신 목적지는 호스트가 아닌 호스트 내 프로세스

포트 번호 : 통신의 최종 목적지인 호스트 내 프로세스(응용 프로그램)을 지정하는 주소

 

전송 계층의 프로토콜은 TCP와 UDP가 있음

TCP

연결형 프로토콜 (연결 설정 후 통신)

신뢰성 있는 데이터 전송 (데이터 재전송)

일대일 통신

데이터 경계 구분 안함

 

UDP 

비연결형 프로토콜 (연결 설정 없이 통신)

신리성 없는 데이터 전송 (데이터를 재전송 하지 않음)

일대일 통신, 이대다 통신

데이터 경계 구분함

 

 

- 응용 계층

전송 계층을 기반으로 한 다수의 프로토콜과 이 프로토콜을 사용하는 응용 프로그램을 포괄함

소켓을 사용한 네트워크 프로그램이 해당됨

 

 

 

데이터 전송 원리

호스트의 응용 프로그램이 수신 측 호스트 응용 프로그램에 데이터 전송을 위해서는 제어 정보가 필요함 (IP, 포트 번호, 오류 체크 비트 등)

-> 제어 정보는 앞쪽에 붙는 헤더와, 뒤쪽에 붙는 트레일러로 나뉨

 

데이터는 제어정보를 결합한 형태(패킷)로 전송됨

패킷 = 제어 정보 + 데이터

 

송신 측에서는 TCP - IP - 이더넷 계층을 지나면서 제어 정보가 덧붙여져 패킷을 생성하고 수신측에 전달

수신 측에서는 이더넷 - IP - TCP 계층을 지나면서 제어 정보가 제거되어 최종적으로 수신 측 응용 프로그램이 데이터를 전달받음

 

 

데이터 전송 원리

응용 계층과 전송 계층의 경우 물리적 연결은 존재하지 않으나, 인터넷/네트워크 계층이 제공하는 기능으로 가상의 연결이 존재하는 것으로 간주, 종단(end-to-end)에서만 존재하며 동작함

-> 종단점 : 네트워크에서 데이터를 보내거나 받는 장치

 

인터넷 계층과 네트워크 접근 계층은 호스트와 라우터에 모두 연결이 존재, IP 주소와 라우팅을 통해 패킷 전송 경로를 결정함

 

 

 

IP 주소, 포트 번호

TCP/IP 프로토콜 통신 시 IP 주소와 포트 번호를 사용함IPv4와 IPv6, 두 가지 종류가 있음

 

IPv4 : 32비트, 8비트 단위로 구분하여 10진수 4개로 표기함 (cf. 192.168.0.1)

IPv6 : 128비트, 16비트 단위로 16진수 8개로 표기 (cf. 2001:0DB8:0000:0000:0000:0000:1428:57ab)

 

IP주소는 인터넷에 있는 호스트를 유일하게 구별할 수 있지만, 프로세스까지는 식별할 수 없음

프로세스 식별을 위해 포트 번호를 사용함

 

 

TCP와 UDP는 포트 번호로 16비트 정수를 사용함 (0~65535까지 범위)

0~1023 : Well-Known Ports

1024~49151 : Registered Ports

49152~65535 : 동적 사설 포트

 

한 프로세스가 둘 이상의 포트를 사용하거나, 한 포트 번호를 둘 이상의 프로세스가 사용할 수 있음

 

 

 

클라이언트-서버 모델

네트워크 프로그램은 일반적으로 클라이언트-서버 모델로 작성

클라이언트-서버 : 두 프로그램이 상호작용하는 모델 (요청 : client | 서비스를 처리 : server)

-> 동시 접속 모델은 타이밍 문제 등으로 접속 실패 확률이 높아 통신할 수 없는 경우가 자주 발생함

-> 클라이언트는 대기, 서버가 먼저 실행 (클라이어트는 서버의 주소와 포트를 통해 접속, 서버는 클라이언트가 전송한 패킷의 정보를 통해 클라이언트에 접속)

 

한 컴퓨터에서 실행되는 두 프로그램간에는 IPC 기법을 사용하면 데이터 송수신 가능함

네트워크로 연결된 컴퓨터의 프로그램간에는 통신 프로토콜(cf. TCP/IP)을 사용하여 데이터 송수신 가능함

 

 

 

소켓 프로그래밍에서 소켓의 의미

양방향 통신 채널의 종단점으로, 동일한 시스템의 프로세스와 프로세스 사이의 통신, 멀리 떨어진 프로세스 사이의 통신에 사용함

데이터 타입, 통신 종단점, 네트워크 프로그래밍 인터페이스

 

 

데이터 타입

프로그래밍 관점에서 소켓은 생성과 설정이 끝나면 OS의 통신 관련 정보를 참조해 다양한 작업을 편리하게 할 수 있는 데이터 타입

 

통신에 필요한 요소

- 사용할 프로토콜 (TCP/IP, UDP/IP 등)

- 송/수신 측 IP 주소, 포트 번호

-> 응용 프로그램은 소켓을 사용해 위 정보들에 접근이 가능함

 

 

통신 종단점

응용 프로그램 관점에서 통신 종단점(통신의 출발점과 도착점)

 

 

네트워크 프로그래밍 인터페이스

TCP/IP 프로토콜 관점에서 소켓은 네트워크 프로그래밍 인터페이스

TCP/IP 프로토콜 구조에서 소켓은 일반적으로 응용 계층과 전송 계층 사이에 위치한다고 간주

 

 

 

도메인

컴퓨터를 식별하는 호스트명 (cf. kangwon.ac.kr)

도메인의 우측으로 갈수록 넓은 범위를 포괄함 (cf. 강원대학교 - 교육시설 - 한국에 있는)

 

- url : 도메인/경로/Query/Path 등을 포함하고 있음

 

DNS에 연결할 수 있는 기능이 포함되어 있어서 호스트 이름을 숫자로 표기된 네트워크 주소로 변환할 수 있음

- DNS : 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대 변환을 수행

 

- DNS Server : 도메인을 위한 DNS 레코드(IP 주소 테이블)를 저장

1. 사용자가 도메인을 이용하여 접속을 시도

2. DNS Server로 이동하여 해당 도메인의 IP 주소를 받아옴

3. DNS Server에서 받아온 IP 주소를 통해 접속

 

'개인 공부 > Network' 카테고리의 다른 글

[Network] 네트워크 프로그래밍 개념  (0) 2022.01.02

공유하기

facebook twitter kakaoTalk kakaostory naver band