-       Blocking mode

소켓 프로그래밍 책을 보다 보면 read, write 함수를 가장 쉽게 보게 됩니다. 리눅스에서 read, write는 소켓 프로그래밍에서 패킷을 보내거나 받을 때 사용하는 함수입니다. 이 함수는 소켓이 blocking인가, non-blocking인가 에 따라 작동방식이 조금 다릅니다. 소켓이 blocking일 경우 Server Client의 메시지 요청을 받기 위해 read에서 기다릴 수가 있습니다Client write하기 전에는 read에서 빠져 나오지를 못하는 것이라고 할 수 있습니다.

Blocking I/O 모델에서의 작동 방식 : 어플리케이션(프로그램)에서 recvfrom(read)를 호출 할 때, 커널은 데이터가 들어올 때까지 봉쇄(blocking)를 시킵니다. 데이터가 들어오면 recvfrom(read)함수는 return이 되고, 프로그램 흐름은 어플리케이션(프로그램)으로 돌아오게 됩니다.

-       Non- blocking mode

위와 같이 blocking 형태의 프로그래밍을 하다보면 서버 프로그램 입장에서는 여러 클라이언트의 처리가 어렵게 됩니다. 그래서 나온 방법이 클라이언트 접속 별로 쓰레드를 생성하여 클라이언트 별 read 함수를 호출 하는 것인데하지만 이 방법도 대규모 처리를 하기 위해서는 Context switching에 발생하는 비용이 만만치 않아 프로그램의 성능을 떨어뜨리게 됩니다. 이러한 방법을 피할 수 있는 방법이 비봉쇄(non-blocking) 방법입니다. non-blocking은 위의 그림처럼 시스템 함수 호출 후 멈출 필요가 없이, 읽을 데이터가 있으면 읽고, 없으면 넘어가게 되는 방법입니다.

Non-blocking I/O 모델에서의 작동 방식 : 어플리케이션(프로그램)에서 recvfrom(read)를 호출 할 때, 커널은 읽을 데이터가 없으면 EWOULDBLOCK (또는 EAGAIN, 둘의 의미는 같음.)을 return 합니다. 위의 그림과 같이 소켓에 읽을 데이터가 있는지 없는지 recvfrom(read)을 Loop를 돌면서 계속 호출해주어야 합니다.

-    Synchronous

동기는 사실상 blocking과 차이점이 없다고 보면 됩니다. 내(어플리케이션)가 당신(커널)의 작업(recvfrom)이 끝날 때 까지 기다려 줄게, 또는 시간을 맞춰줄게, 또는 동기화 해줄게. 라고 생각하시면 됩니다. 어플리케이션이 커널에 작업을 요청하고 커널에서 작업이 끝날때 까지 어플리케이션이 기다려 주는 것으로, 즉 동기화 하기 위해서 봉쇄(blocking)을 하는 것입니다.

-       Asynchronous

비동기의 간단한 개념을 따지자면 비동기 read함수를 호출하면 바로 return이 됩니다

비동기 함수를 호출할 때는 작업이 완료가 될 때 알려줄 수 있는 event나 callback함수를 설정하게 되는, 즉 어플리케이션이 커널에게 '읽을게 있으면 나에게 알려주거나, (event)callback함수를 호출해' 라고 하는 것입니다.

즉, 비동기 프로그래밍은 non-blocking처럼 지속적인 관찰이 필요한 프로그래밍이 아니라 일단 작업을 걸어두고 다른 작업을 진행하다가 어떠한 신호나 작업이 들어올 경우 걸어둔 작업을 진행한다. 라고 생각하면 좀 더 수월해 질 것입니다.

Asyncronous I/O 모델에서의 작동 방식 : 어플리케이션(프로그램)에서 IO_read를 호출 할 때, 커널은 읽을 데이터가 있던 없던 return을 하게 되며, 읽을 데이터가 발생하게 되면 event를 발생하거나 callback함수를 호출하게 됩니다.

'Network' 카테고리의 다른 글

DHCP란?  (0) 2016.04.19
채널화의 종류  (0) 2016.04.19
ARP/RARP Protocol, 동작 방법  (0) 2016.04.19
OSI 7계층(OSI 7 Layer)  (2) 2016.04.19
NAT란?  (0) 2016.04.19

WRITTEN BY
SiriusJ

,

앞선 포스팅에서 ARP에 대해 간단히 IP를 이용하여 MAC주소를 알아내는 방식이라고만 짧게 설명했었는데 

이번에 ARP와 RARP에 대해 자세히 살펴보겠습니다.


-       개요

주소 결정 프로토콜(Address Resolution Protocol, ARP)네트워크 상에서 IP 주소를 물리적 네트워크 주소로 대응(bind)시키기 위해 사용되는 프로토콜입니. 여기서 물리적 네트워크 주소는 이더넷 또는 토큰링 48 비트 네트워크 카드 주소를 뜻합니다.


-       사용하는 이유?

ARP Layer 2계층 이더넷 환경에서 목적지 IP주소에 대한 MAC주소 변환 동작을 담당합니다. 단 목적지 MAC주소 정보가 없다면, ARP주소 변환이 불가능하기 때문에 데이터를 전송할 수 없습니다. 상대방은 MAC 주소가 없는 패킷을 받으면 2계층 (Datalink-Layer)에서 폐기해 버리기 때문에 상대방의 MAC주소를 알아야 프레임이 만들어져서 통신을 할 수 있게 됩니다.

 

-       간단하게 동작방법을 알아보겠습니다.

이를테면, IP 호스트 A IP 호스트 B에게 IP 패킷을 전송하려고 할 때 IP 호스트 B의 물리적 네트워크 주소를 모른다면, ARP 프로토콜을 사용하여 목적지 IP 주소 B브로드캐스팅 물리적 네트워크 주소 FFFFFFFFFFFF를 가지는 ARP 패킷을 네트워크 상에 전송합니다. IP 호스트 B는 자신의 IP 주소가 목적지에 있는 ARP 패킷을 수신하면 자신의 물리적 네트워크 주소를 A에게 응답하게 됩니다.

이와 같은 방식으로 수집된 IP 주소와 이에 해당하는 물리적 네트워크 주소 정보는, 각 IP 호스트의 ARP 캐시라 불리는 메모리에 테이블 형태로 저장된 다음, 패킷을 전송할 때에 다시 사용됩니다

ARP와는 반대로, IP 호스트가 자신의 물리 네트워크 주소는 알지만 IP 주소를 모르는 경우, 서버로부터 IP주소를 요청하기 위해 RARP를 사용하게 됩니다.


-       동작 방법


. 송신자는 목적지 IP주소는 알고 있으나, 물리주소는 모름

. 물리주소를 알아내기 위해 ARP 요청 메시지 생성

= ARP 요청 메시지 (송신자 물리주소, 송신자 IP주소, 00-00-00-00-00, 수신자 IP주소)

. 요청메시지를 데이터링크 계층으로 전달, 프레임 생성

= 송신자 물리주소를 발신지 주소, 수신자 물리주소를 브로드캐스트 주소로 지정

. 모든 호스트나 라우터는 이 프레임을 수신하여 자신의 ARP로 전달

. 요청 메시지에 해당되는 호스트나 라우터만 ARP응답 메시지 생성

= 자신의 물리주소를 포함하는 응답 메시지

. ARP 응답메시지를 유니캐스트로 ARP 요청 메시지를 보낸 송신자에게 전송

= 유니캐스트를 이용하는 이유는 송신자가 요청메시지에 물리주소를 포함했기 때문

. 송신자는 ARP 응답메시지를 받고 목적지 물리주소를 획득

. 목적지에게 전송할 IP데이터그램을 획득한 물리주소를 이용해 프레임으로 캡슐화

. 캡슐화된 프레임을 유니캐스트로 목적지로 전송


WRITTEN BY
SiriusJ

,

OSI 7계층(OSI 7 Layer)

Network 2016. 4. 19. 15:57

네트워크의 가장 기초중의 기초. OSI 7계층에 대한 설명입니다. 네트워크에서 가장 먼저 접하고, 

기본적으로 반드시 알아야하는 부분입니다.


-       개요

: OSI(Open System Interconnection) 참조 모델은 시스템 간의 원활한 통신을 위해 ISO(국제표준화기구)에서 제안한 통신 규약(Protocol)입니다.


- 하위 계층(물리, 데이터 링크, 네트워크)

- 상위 계층(전송, 세션, 표현, 응용)

-       기본 원칙

1) 적절한 수의 계층으로 나누어 시스템의 복잡도를 최소화

2) 서비스 접점의 경계를 두어 상호 작용이 적어질 수 있도록 함

3) 프로세스나 기술적인 면에서 명백히 다른 기능을 처리하도록 계층을 분리

4) 비슷한 기능은 하나의 계층으로 모으기

5) 인접한 상,하위 계층 간에는 인터페이스를 둠

6) 한 계층을 수정할 때 다른 계층에 영향을 주지 않도록 함


-       데이터 단위

- PDU(Protocol Data Unit)동일 계층 간에 교환되는 정보의 단위

- SDU(Service Data Unit),하위 계층끼리 주고 받는 정보의 단위


-       각 계층별 기능

1) 물리 계층(Physical Layer)

: 전송에 필요한 두 장치 간의 실제 접속과 절단 등 기계적, 전기적 특성에 대한 규칙을 정의. 물리적 전송 매체와 전송 신호 방식을 정의

2) 데이터 링크 계층(Data Link Layer)

: 두 개의 인접한 개방 시스템들 간에 신뢰성 있고 효율적인 정보 전송을 할 수 있도록 합니다.

- 송신 측과 수신 측의 속도 차이를 해결하기 위한 흐름 제어 기능

- 프레임의 시작과 끝을 구분하기 위한 프레임의 동기화 기능

- 오류의 검출과 회복을 위한 오류 제어 기능

- 프레임의 순서적 전송을 위한 순서 제어 기능

3) 네트워크 계층(Network Layer, 망 계층)

- 개방 시스템들 간의 네트워크 연결을 관리하는 기능과 데이터의 교환 및 중계 기능

- 네트워크 연결을 위해 설정, 유지, 해지하는 기능

- 경로 설정(Routing), 데이터 교환 및 중계, 트래픽 제어, 패킷 정보 전송을 수행

4) 전송 계층(Transport Layer)

: 종단 시스템(End-to-End)간에 투명한 데이터 전송을 가능하게 합니다.

- 종단 시스템 간의 전송 연결 설정, 데이터 전송, 연결 해제 기능

- 주소 설정, 다중화, 오류 제어, 흐름 제어 기능

- TCP, UDP 등의 표준이 있습니다.

5) 세션 계층(Session Layer)

: 애플리케이션 간에 세션을 구축하고 관리하면 종료시키는 역할을 합니다.

- 대화 구성 및 동기 제어, 데이터 교환 관리 기능

- 송,수신 측 간의 대화의 동기를 위해 체크섬을 둠

6) 표현 계층(Presentation Layer)

: 응용 계층으로부터 받은 데이터를 세션 계층에 보내기 전에 통신에 적당한 형태로 변환하고, 세션 계층에서 받은 데이터를 응용 계층에 맞게 변환하는 기능을 담당합니다.

- 서로 다른 데이터 표현 형태를 갖는 시스템 간의 상호 접속을 위해 필요한 계층

- 코드 변환, 데이터 암호화, 데이터 압축, 정보 형식 변환 등

7) 응용 계층(Application Layer)

: 사용자가 OSI 환경에 접근할 수 있도록 서비스를 제공합니다.


WRITTEN BY
SiriusJ

,

NAT란?

Network 2016. 4. 19. 15:51

NAT란...? 가령 공유기 설정을 직접 한번 만져보신분들은 어디선가 본 듯한 단어입니다.


- 네트워크 주소 변환(Network Address Translation, 줄여서 NAT)IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술을 말합니다.

패킷에 변화가 생기기 때문에 IPTCP/UDP의 체크섬(checksum)도 다시 계산되어 재기록해야 합니다. NAT를 이용하는 이유는 대개 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함입니다. 많은 네트워크 관리자들이 NAT를 편리한 기법이라고 보고 널리 사용하고 있으며, NAT가 호스트 간의 통신에 있어서 복잡성을 증가시킬 수 있으므로 네트워크 성능에 영향을 줄 수 있는 것은 당연하다 볼 수 있습니다.

NATIPv4의 주소 부족 문제를 해결하기 위한 방법으로서 고려되었으며, 주로 비공인(사설, local) 네트워크 주소를 사용하는 망에서 외부의 공인망(public, 예를 들면 인터넷)과의 통신을 위해서 네트워크 주소를 변환하는 것입니다

즉 내부 망에서는 사설 IP 주소를 사용하여 통신을 하고, 외부망과의 통신시에는 NAT를 거쳐 공인 IP 주소로 자동 변환합니다.


(NAT을 사용하는 목적)

첫째, 인터넷의 공인 IP주소를 절약할 수 있다는 점

둘째, 인터넷이란 공공망과 연결되는 사용자들의 고유한 사설망을 침입자들로부터 보호할 수 있다는 점

 

1) 인터넷의 공인 IP주소는 한정되어 있기 때문에 가급적 이를 공유할 수 있도록 하는 것이 필요한데 NAT를 이용하면 사설 IP주소를 사용하면서 이를 공인 IP주소와 상호변환할 수 있도록 하여, 공인 IP주소를 다수가 함께 사용할 수 있도록 함으로써 이를 절약할 수 있는 것입니다.

2) 공개된 인터넷과 사설망 사이에 방화벽(Firewall)을 설치하여 외부 공격으로부터 사용자의 통신망을 보호하는 기본적인 수단으로 활용할 수 있습니다. 이때 외부 통신망 즉 인터넷망과 연결하는 장비인 라우터에 NAT를 설정할 경우 라우터는 자신에게 할당된 공인 IP주소만 외부로 알려지게 하고, 내부에서는 사설 IP주소만 사용하도록 하여 필요시에 이를 서로 변환시켜 줍니다. 따라서 외부 침입자가 공격하기 위해서는 사설망의 내부 사설 IP주소를 알아야 하기 때문에 공격이 불가능해지므로 내부 네트워크를 보호할 수 있게 됩니다.


WRITTEN BY
SiriusJ

,

- Unicast(유니캐스트)

- 1:1 통신방식이라고 말할 수 있습니다. 위 그림과 같이 정확하게 받는 PC의 주소를 프레임 안에 써 넣는데 이 때 PC가 하나이어야 한다는 것입니다. 위 방식으로 네트워크에 유니캐스트 프레임을 뿌리게 되면, 로컬 이더넷의 기본 성격이 붙어있는 모든 PC들은 이 프레임을 받아들여 자신의 MAC 주소와 비교하게 됩니다. 그 다음 자신의 랜카드 MAC 주소와 받아들인 프레임의 목적지 MAC 주소를 서로 비교하게 됩니다

같은 경우 CPUDATA를 올려 통신하게 되며, 다르다면 그 프레임을 버리게 됩니다

여기서 중요한 포인트는 LAN카드에서 받은 프레임의 목적지 MAC주소와 자신의 MAC주소를 비교한다는 것입니다. , 무수한 유니캐스트가 들어온다 하더라도 LAN에서 충분히 걸러주기 때문에 네트워크 연결되어 있는 PC들의 성능에는 영향을 미치지 않게 됩니다

결론적으로 유니캐스트는 상대방의 MAC 주소를 지정했을 때 가능하며, 네트워크에 연결된 다른 장비들에게 부담을 주지 않습니다.


- Multicast(멀티캐스트)

멀티캐스트는 1:Group 통신이고, 특정한 그룹에게만 프레임을 뿌리게 됩니다.

 

- Broadcast(브로드캐스트)

로컬 LAN상의 붙어있는 모든 네트워크 장비에게 보내는 통신입니다. 로컬 LAN이란 라우터에 의해서 구분지어진 공간, 브로드캐스트 도메인이라고 하는 공간을 뜻하고, 같은 네트워크에 있는 모든 장비들에게 뿌리는 것입니다.

ex) 건물 내 공지사항

브로드캐스트는 무조건 받아서 CPU로 올리게 됩니다. 브로드 캐스트는 통신하고자 하는 상대편의 MAC 주소를 모를 때 사용하는데, IP는 알 수 있습니다. 이 경우에 상대의 MAC주소를 알아내기 위해서 하는 동작이 

ARP(Address Resolution Protocol = IP->MAC) - IP를 이용해서 MAC 알아내기입니다.


WRITTEN BY
SiriusJ

,

IPv4와 IPv6에 대한 기본적인 설명 및 차이점, 문제점 등입니다.

- 현재 네트워크 계층의 프로토콜은 IPv4(Internet Protocol, version 4)를 사용하고 있습니다.

현재 IP주소는 버전4(IPv4)으로 네 도막으로 나눠진 최대 12자리의 번호로 이뤄져있습니다. 

예를 들면 210.113.39.224」라 하겠습니다.

한 도막(위에서 각각 210, 113, 39, 224)은 0~255까지의 숫자로 표현할 수 있으며, 한 도막에 256가지의 경우의 수. 즉 2의 8승을 표현할 수 있습니다.

비트로 표현하면 한 도막마다 8비트로 이루어지며 총 4도막이므로 8*4 = 32비트 가 됩니다.

32비트로 이뤄진 IPv4는 최대 약 40억개의 서로 다른 주소를 부여할 수 있습니다그러나 기하급수적으로 늘어나는 사용자 수요를 감안할 때, 현재 사용되고 있는 IPv4 체계로는 계속해서 요구되는 인터넷 주소의 수요를 충족시킬 수 없다는 문제점이 있습니다. IPV4는 한마디로 32비트의 40억개의 주소(2^32)로 구성됩니다.

 

* IPV4 에서 IPV6 로의 전환의 이유

(IETF:Internet Engineering Task Force)에서는 2008년에서 2011년 사이에 IPv4 어드레스가 고갈될 것으로 예측했으며, 'IPng'(IP next generation)라고 하는 작업 그룹을 형성하여, 1994년부터 활동해 왔습니다. 이 결과로 1995918일 표준이 제안되면서 IPv6가 만들어 졌고, 또한 IPv6를 연동, 실험시킬 수 있는 실험망으로 1996Bob Fink등이 주축이 되어 6Bone이라는 가상망을 만들었습니다. 그래서 IPV6 ( Internet Protocol version 6 )가 나오게 된 배경이라고 할 수 있습니다.

* IPV6

IPv6주소는 128비트체계로 구성 되어 있으며, 그 표현방법은 128비트를 16비트씩 8부분으로 나누어 각 부분을 콜론(colon, "":"")으로 구분하여 표현하며, 각 구분은 16진수로 표현합니다.

) 2001:230:abcd:ffff:0000:0000:ffff:1111

128비트 주소체계인 IPv6는 최대 1조개 이상(2^128)을 마련할 수 있는 점이 특징입니다. IPv6가 쓰이면 장차 일상생활에 사용하는 모든 전자제품, 작게는 전자제품의 일부 회로가 서로 다른 IP주소를 갖게 된다고 볼 수 있습니다.

또한 서비스에 따라 각기 다른 대역폭을 확보할 수 있도록 지원, 일정한 수준의 서비스 품질(QoS)을 요구하는 실시간 서비스를 더욱 쉽게 제공할 수 있고 인증, 데이터 무결성, 데이터 기밀성을 지원하도록 보안기능을 강화한 것이 IPv6입니다.

또 인터넷 주소를 기존의 A, B, C, D와 같은 클래스별 할당이 아닌 유니캐스트·애니캐스트·멀티캐스트 형태의 유형으로 할당하기 때문에 할당된 주소의 낭비 요인이 사라지고 더욱 간단하게 주소를 자동 설정할 수 있습니다.

 

앞으로 유비쿼터스에서는 각기 전자제품도 고유 아이피를 갖게 되는 IoT의 환경에 적용하기에 더 적합하다고 보여집니다.


WRITTEN BY
SiriusJ

,

네트워크 상에서는 무수히 많은 데이터가 오고가고, 그에 따라 트래픽 혹은 여러가지 기타 이유로 인하여 패킷이 손실할 수 있는 가능성이 많습니다. 이러한 패킷손실에 대하여 TCP는 신뢰적인 데이터 전송 메카니즘을 가지고 있습니다.


매우 복잡한 부분이지만, 간단하게 요약해서만 설명드리고자 합니다.


- UDP 프로토콜의 경우에는 비신뢰적인 네트워크 통신방식이므로 에러를 검출해낼 수 없습니다

, TCP 프로토콜이 신뢰적인 통신 연결방법이므로 이 TCP통신에서 데이터가 전송 될 때 패킷이 깨질 수 있는 가정으로 두어야 합니다.

첫째, 신뢰적인 데이터 전송의 메커니즘으로는 먼저 Checksum(체크섬) 이 있는데 이는 전송된 패킷 안의 비트 오류를 발견하는데 사용됩니다.

둘째, Timer(타이머)는 채널 안에서 패킷이 손실 되었기 때문에 발생되는 패킷의 타임아웃/재전송에 사용됩니다. 타임아웃은 패킷이 지연되었지만 손실되지는 않았을 때(지속 타임아웃), 또는 패킷이 수신자에 의해서 수신되었으나 수신자에서 송신자로의 ACK가 손실 되었을 때 발생하기 때문에, 수신자에 의해서 수신되는 패킷은 중복 복사(수신)된 패킷일 수 있습니다.

셋째, 순서번호(Sequence)는 송신자에서 수신자로 가는 데이터 패킷의 순서번호를 붙이기 위해서 사용됩니다. 수신자 패킷의 순서번호의 격차는 수신자로 하여금 손실된 패킷을 검사하게 합니다. 중복된 순서번호를 갖는 패킷은 수신자로 하여금 패킷의 중복 복사(수신)를 검사하게 합니다.

넷째, 확인응답(Acknowledge)는 패킷이 정확히 수신되었다는 응답을 송신자에게 하기 위해 수신자에 의해서 사용됩니다. 확인 응답은 일반적으로 패킷의 순서번호 또는 확인응답된 패킷을 전달합니다. 확인응답을 프로토콜에 의존하여, 개별적이거나 누적될 수 있습니다.

 

그밖에, 부정 확인응답(NAK)는 패킷이 정확히 수신되지 않았다는 응답을 송신자에게 하기 위해 수신자에 의해서 사용됩니다. 부정확인응답은 일반적으로 정확히 수신되지 않은 패킷의 순서번호를 전달하게 됩니다.

 

[참고]

이러한 신뢰적인 데이터전송 메커니즘을 통하여 패킷이 깨졌을 때에 대하여 인식하고, 재전송할 수 있게 합니다.




WRITTEN BY
SiriusJ

,

서버 개발에 대한 경험이 있는 분이시라면 IP와 Port를 통해 기본적으로 서버구축을 하게 될 겁니다.

(처음 접할때는 보통 자신의 루프백 주소인 localhost로 하겠죠?ㅎㅎ)

이 때, Port란 것에 대해 간단히 살펴보겠습니다.


- 포트는 "논리적인 접속장소"이며, 특히 인터넷 프로토콜인 TCP/IP를 사용할 때에는 클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 방법으로 사용이 됩니다

웹 프로토콜인 HTTP와 같이, TCP/IP의 상위 프로토콜을 사용하는 응용프로그램에서는 미리 지정된 포트번호 들을 가지고 있으며, 이런 것들은 IANA(Internet Assigned Numbers Authority)에 의해 지정되었으며, "잘 알려진 포트들"이라고 불리워 집니다.

다른 응용프로그램 프로세스들은 매번 접속할 때마다 포트번호가 동적으로 부여됩니다. 서버 프로그램이 처음 시작되면, 지정된 포트번호로 바인드되는데, 이 서버를 사용하려는 모든 클라이언트 프로그램들은 지정된 포트번호에 바인드해야만 합니다.

 

바인드가 되면 두 개의 컴퓨터간 네트워크를 이용한 통신 시, 발신지 컴퓨터에서 출발한 사용자 데이터(패킷)TCP/IP의 각 계층을 거치면서 최종적으로 목적지 주소(IP)를 가지고 있는 컴퓨터에 도착하게 됩니다. 패킷을 수신한 컴퓨터는 전송 시에 사용되었던 주소필드를 제거하고, 패킷 안에 있는 데이터만을 응용프로그램에 넘겨주게 됩니다.

 

결국 데이터를 넘겨줄 컴퓨터에는 FTP, Mail, Telnet, SSH, Web 등 다양한 종류의 응용프로그램이 기동하고 있을 것인데, 수신측 컴퓨터가 인터넷 계층에서 패킷을 수신한 후 응용계층으로 데이터를 전달하려고 할 때, 컴퓨터 내에 사용중인 많은 응용프로그램들 중 누구에게 데이터를 전달해야 하는지 구분하기 위하여 운영체제는 응용프로그램의 논리적인 주소인 Port 번호라는 것을 이용합니다. 즉 각각의 응용프로그램 (서비스)에 유일한 논리적 주소인 Port 번호를 할당하여, 전송계층에서 응용프로그램을 구분할 수 있도록 합니다.

 

(IP Address, Port) -> IP Address는 컴퓨터를 찾을 때 필요한 주소를 나타내며, Port는 컴퓨터 안에서 프로그램을 찾을 때 를 나타내는 것입니다.

, 두 개를 이용하여 특정 컴퓨터의 프로그램을 이용 할 수 있게 됩니다.


#PORT - (0~1023)

: 0번 포트에서 1023포트 까지 -> Well-known port number 라고 하며 미리 특수용도로 지정되어 있기 때문에 가급적 개인적으로 테스트용 프로그램을 개발 시에는 0~1023사이의 포트번호는 피하는 것이 좋습니다.

(Well-known port의 종류)

21: FTP

22: SSH

23: TELNET

-> 인터넷을 통하여 원격지의 호스트 컴퓨터에 접속할 때 지원되는 인터넷 표준 프로토콜

25: SMTP[Simple Mail Transfer Protocol]

-> 인터넷에서 전자우편을 보낼 때 이용하게 되는 표준 통신 규약을 말합니다.

53: DNS

61: SNMP[Simple Network Management Protocol]

-> 네트워크 장비를 관리 감시하기 위한 목적으로 TCP/IP 상에 정의된 응용 계층 표준 프로토콜

80: HTTP [hypertext transfer protocol]

-> 인터넷에서, 웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위해 사용되는 통신 규약

110: POP3 [Post Office Protocol version 3]

-> 인터넷에서 전자 우편을 가져오기 위한 프로토콜

115: SFTP

135: RPC

139: NetBIOS

143: IMAP [internet messaging access protocol]

-> 인터넷 메일 서버에서, 메일을 읽기 위한 인터넷 표준 통신 규약의 한가지. POP3보다도 유연하고 뛰어난 성능

194: IRC

443: HTTPS(SSL) [Hypertext Transfer Protocol over Secure Socket Layer]

-> 월드 와이드 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전

445: SMB

3389: 원격데스크탑 연결


WRITTEN BY
SiriusJ

,