RTO care

TCP/IP

관련기술2016. 10. 24. 15:44

TCP/IP 프로토콜의 구조

   

* TCP/IP 프로토콜

- 인터넷에서 사용하는 핵심적인 프로토콜은 TCP 와 IP 로, 이를 포함한 각종 프로토콜을 총칭

- 일반적으로 운영체제에서 그 구현을 제공, 일반 application 은 운영체제가 제공하는 TCP/IP 프로토콜의 서비스를 사용하여 통신을 수행

- 종단시스템간의 통신을 위해 정해진 절차와 방법을 따라야 하는데 그것을 프로토콜(Protocol)이라고 한다.

이 프로토콜중 인터넷에서 사용하는 프로토콜로 TCP/IP로 일반 어플리케이션(줄여서 App라고 하자)은 OS가 제공하는 TCP/IP 서비스를 사용해 통신을 수행한다.

APP <-> TCP/IP (OS 영역) <-> Router <== 네트워크 ==> Router <->TCP/IP(OS) <-> APP

   

-TCP/IP 포로토콜의 구조

통신을 수행하는 개체는 종단 시스템과 라우터로 크게 나눌수 있다.

   

* 종단 시스템(End-System) : 최종 사용자(End user)를 위한 애플리케이션을 수행하는 주체,인터넷 PC, PDA, 휴대폰 등등의 단말기 즉, 최종사용자( End-User ) 를 위한 Application 을 수행하는 주체

   

* 라우터( router ) : 종단 시스템이 속한 네트워크를 서로 연결시켜주는 네트워크-네트워크간의 통신과 종단 시스템을 연결시켜주는 장비. 

   

* 프로토콜 ( protocol )

- 종단 시스템과 라우터간, 라우터와 라우터간, 그리고 종단 시스템과 종단 시스템간 통신을 수행하기 위해 정해놓은 절차와 방법

    

* 대역폭 ( Bandwidth )

- 네트워크에서 대역폭이라는 말은 링크 사이에서 1초 동안에 전송할 수 있는 비트들의 수를 의미한다.

   

   

- Application 간 통신을 수행하기 위한 요구조건

- 1)통신할 대상(종단 시스템 자체, 종단 시스템에서 수행되는 Application )

- 2)상호 약속된 방법(통신규약)

- 3)전송 오류 확인 기능

- 4)오류 발생 시 재전송 기능

- 5)데이터의 순서 관계 유지 등

   

   

OSI 7계층과 TCP/IP 4계층 

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

TCP/IP 4계층 분석

1계층: Network Access layer( 네트워크 엑세스 계층 : 1계층 )

- 물리적 네트워크를 통한 실제적인 데이터 전송을 담당

- 구성요소 : 네트워크 하드웨어, 디바이스 드라이버

- 물리 주소( Physical address = MAC address ) 를 사용하여 통신 수행1

   

2계층: Internet layer( 인터넷 계층 : 2계층 )

- 네트워크 액세스 계층의 도움을 받아, 전송 계층이 내려 보낸 데이터를 종단 시스템까지 전달하는 역할

- 주소를 지정하는 방법이 필요하며 물리 주소 대신 소프트웨어적으로 정의된 논리 주소를 사용한다. 이를 IP 주소( Internet Protocol address ) 라고 한다.

   

Routing ( 라우팅 )

- 목적지까지 데이터를 전달하기 위한 일련의 작업

- 라우팅을 위한 정보 획득 작업

- 라우팅 정보를 기초로 실제 데이터를 전달( Forward ) 하는 작업

   

3계층: Transport layer ( 전송 계층 : 3계층 )

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

- 라우터

- 통신의 최종 목적지는 해당 컴퓨터에서 실행되고 있는 프로그램(프로세스) 인데, 이를 지정하는 일종의 주소를 사용할 필요가 있다. 이것이 포트번호( Port number ) 가 된다.

- TCP/IP 프로토콜에서 전송 계층에 해당하는 프로토콜로는 TCP( Transmission Control Protocol )와 UDP( User Datagram Protocol ) 가 있다.

   

TCP

UDP

연결형(connection-oriented) 프로토콜

- 연결을 해야 통신 가능

비연결형(connectionless) 프로토콜

- 연결 없이 통신 가능

데이터 경계를 구분하지 않음

- 바이트 스트림(byte-stream) 서비스

데이터 경계를 구분함

- 데이터그램(datagram) 서비스

신뢰성 있는 데이터 전송

- 데이터를 재전송함, 순서보장 됨

비 신뢰적인 데이터 전송

- 데이터를 재전송하지 않음, 순서 보장 안됨

1 대 1 통신(unicast)

1대1 통신(unicast), 1대다 통신(broadcast), 다대다 통신(multicast)

   

4계층: Application layer ( 응용 계층 : 4계층 )

- 응용계층( Application Layer) : 최상위 계층, 사용자 프로세스들이 접속하는 계층,

- 표현계층(Presentation Layer) : 네트워크를 통해 전송되는 정보의 표현방식 관리, 암호화, 정보 압축

- 세션계층( Session Layer ) : 두 통신 프로그램간의 데이터 교환을 관리하는 역할.

   

   

   

=>자세히알아보자

   

네트워크 소켓 프로그래밍

현재 하고 있는 네트워크 프로그래밍은 TCP/IP 기반의 Socket 네트워크임.

   

-TCP/IP 포로토콜의 구조

통신을 수행하는 개체는 종단 시스템과 라우터로 크게 나눌수 있다.

* 종단 시스템(End-System) : 최종 사용자(End user)를 위한 애플리케이션을 수행하는 주체,인터넷 PC, PDA, 휴대폰 등등의 단말기

* 라우터 : 종단 시스템이 속한 네트워크를 서로 연결시켜주는 네트워크-네트워크간의 통신과 종단 시스템을 연결시켜주는 장비.

   

이런 종단시스템간의 통신을 위해 정해진 절차와 방법을 따라야 하는데 그것을 프로토콜(Protocol)이라고 한다.

이 프로토콜중 인터넷에서 사용하는 프로토콜로 TCP/IP로 일반 어플리케이션(줄여서 App라고 하자)은 OS가 제공하는 TCP/IP 서비스를 사용해 통신을 수행한다.

APP <-> TCP/IP (OS 영역) <-> Router <== 네트워크 ==> Router <->TCP/IP(OS) <-> APP

-TCP/IP 프로토콜을 이용한 통신 순서도-

APP간의 통신을 위해서는 다양한 요구 조건이 있는데. 종단 통신의 Destination을 지정하는 상호 약속방법, 전송 오류 확인 방법, 오류 발생시 재전송 기능, Data의 순서 관계 유지 등등이 있다.

이와 같은 기능은 프로토콜에서 제공하며 이로 인해 App에서의 부담을 덜어주고 쉽게 네트워크 프로그래밍이 가능해진다.

   

TCP/IP 프로토콜의 구조로 

   

App 계층(Application Layer)(TELNET, FTP, HTTP, SMTP, MIME, SNMP...)

----------

전송계층 (Transport Layer) (TCP/ UDP)

----------

인터넷 계층(Internet Layer) (IP)

-----------

네트워크 엑세스 계층(Network access Layer) (Device Driver, Network Hardware)

   

-네트워크 엑세스 계층(NAL)은 물리적 네트워크를 통한 실체적 데이터 전송을 담당한다.

하드웨어와 O/S가 제공하는 디바이스 드라이버 등이 구성요소이며 물리적 addr인 Physical address를 사용하여 데이터를 통신한다. 

   

-인터넷 계층은 NAL의 도움을 받아 전송 계층이 내려보낸 데이터를 종단 시스템까지 보내는 역할을 한다.

여기서는 물리적 addr이 아닌 논리적 addr을 사용하는데 이것이 IP주소(Internet Protocol Address)라 부른다.

IP주소는 물리 주소와 무관하며 전세계적으로 유일성이 보장된다.

IP주소는 통신에 참여하는 종단시스템을 유일하게 지정할수 있는 방법을 제공하지만 실제 데이터를 전송하려면 전송 경로를 알아야 한다. 이런 경로를 알아내기 위한 라우팅 작업이 필요하며, 이 작업을 담당하는 전용 컴퓨터를 라우터(Router)라고 부른다.

그래서 라우터에 다양한 네트워크가 연결되어 통신을 수행할 수 있다.

   

-전송계층은 라우팅을 통해 목적지 종단 시스템까지 도착하였다. 그러나 데이터를 받고 처리할 대상은 물리적 H/W가 아닌 App다.

이 프로세스에게 도달하기 위해 전송 계층에서 이 프로세스를 지정하는 일정의 주소를 사용하며 이를 포트번호(Port Number)라 부른다.

또한 데이터 전송시 손상의 가능성이 있다. 통신은 언제나 왜곡이나 손상에 노출되어 있으며 이로 인해 데이터 오염이 발생 할 수 있고, 데이터가 목적지에 도착하지 못했을 경우도 있다. 이런 손실 또는 손상을 검출하여 잘못된 데이터가 목적지 프로세스에게 전달되는 것을 방지한다.

TCP/IP 프로토콜에서 전송계층에 해당하는 프로토콜에 TCP와 UDP가 있다.

애플리케이션 계층(App layer) : 전송계층을 기반으로 한 다수의 프로토콜과 이 프로토콜을 이용하는 app를 포괄한다.

소켓 네트워크 app도 여기에 포함된다.

   

-패킷 전송 원리

 패킷에는 IP주소,포트 번호, 오류체크 코드, 데이터 등 다양한 정보를 포함시켜 전송한다.

app에서는 data를/  TCP부에서 TCP헤더를 IP부에서 IP를 이더넷에서 헤더+트레일러를 기록한다.

수신은 이 역방향으로 제거해서 얻어간다.

   

IP는 전세계에서 유일성을 가진다. 다만 호스트의 주소만 가지지 호출될 프로세서는 모른다.

Port넘버는 프로세스간의 nametag같은 기능이라고 보면 된다. (서로 규약된 포트 번호를 통해 data를 판독 사용하게 된다)

Port넘버는 unsinged int(16bit)로 0~65535 까지 사용가능하다.

다만 0~1023까지 이미 occupied 되어 있으니 그 외의 번호를 사용하는게 좋다.

   

-클라이언트/서버 모델

 클라이언트/서버는 두개의 app가 상호작용하는 방식을 나타내는 용어로. 클라이언트가 서버에 요청을 하면 서버는 이를 받아 처리하게된다. 하나의 컴퓨터에서 실행되는 두 프로그램간 클라이언트서버 모델이 적용될 경우, 두 프로세스간 통신(IPC, Inner Process Communication) 기법을 사용하여 상호 정보를 교환한다.

네트워크로 연결된 두 컴퓨터에서 실행되는 Server/Client 라면 통신 프로토콜에 의해 상호 정보를 교환한다.

   

서버와 클라이언트 간의 통신시 서로 같이 접속모델을 사용할 경우가 발생하는데 이때는 동시접속으로 인해 교착상태가 발생한다. 이를 방지하기 위해 서버가 먼저 실행되고 클라이언트가 접속을 하게 하게 한다면 이는 구조가 쉽게 처리된다.

   

이때 클라이언트는 서버의 IP와 Port번호를 미리 알고 있어야 하는데 서버는 그럴 필요가 없다.

접속되는 클라이언트가 보내는 패킷에는 클라이언트 주소 정보가 모두 들어있기 때문이다.

서버는 언제든지 이 정보를 이용할 수 있다. 

   

출처: <http://skmagic.tistory.com/entry/TCPIP-%EA%B0%9C%EC%9A%94>

'관련기술' 카테고리의 다른 글

Socket Option  (0) 2016.10.24
socket  (0) 2016.10.24
콘크리트  (0) 2016.10.24
드라이크리닝  (0) 2016.10.24
리튬이온 전지  (0) 2016.10.24