본문 바로가기
학부공부/OS_운영체제

16. Port [Interesting topic to study]

by sonpang 2021. 11. 24.
반응형

안녕하세요. 오늘은 port에 대해 알아볼까 합니다.

2021.11.21 - [학부공부/OS_운영체제] - 15. IPC(1)

 

15. IPC(1)

안녕하세요. 오늘은 IPC에 대해 알아보겠습니다. 저번 포스팅을 끝으로 프로세스에 대해 알아보았었는데요. 프로그램과 프로세스, 문맥전환, 프로세스 상태, linux에서의 프로세스 생성에 대해 설

ku320121.tistory.com

위 포스팅에서 IPC의 메커니즘 중 하나로 socket에 대해 소개해 드렸습니다. 소켓의 정의로 bound a port라고도 말씀드렸는데요. 다른 IPC와 달리 machine boundary 측면에서 새로운 dimension을 제공하여 아주 중요하다고 하였습니다. 소켓은 포트의 도움을 통해 프로세스의 위치에 독립적으로 작동할 수 있다는 것이죠. 여기서 port란 무엇인지에 대해서 오늘 조금 더 자세히 알아보는 시간을 가질까 합니다.

 

 

"우선 포트를 사용하기 때문에 machine boundary와 관계가 없고 remote machine은 local machine의 port만 볼 수 있습니다. 프로세스는 소켓을 통하여 패킷을 주고 받습니다."

 

라고 말씀드렸는데요. 즉, A(a1, a2, a3). B(b1, b2, b3) host가 있으면 a1이 B를 볼 때 b1, b2, b3 소켓이 보이지 않는다는 것입니다. B가 exposed하는 것은 포트 뿐이라는 거죠. 포트가 받으면 커널 네트워킹 코드가 해석해서 b1, b2, b3 중 하나로 보내줍니다.

 

 

16.01. Port

포트는 Internet protocol suite에서 OS 통신의 종단점, 소프트웨어에서 네트워크 서비스나 특정 프로세스를 식별하는 논리단위 입니다. 여러분이 포트번호를 들어보신적 있으실텐데요. 바로 각 포트를 번호로 구별하고 IP주소와 함께 쓰여 해당하는 프로토콜에 의해 사용되기 때문입니다. Firewall에서 포트 설정을 하는데요. 요즘은 라우터에도 firewall기능이 있어서 웹으로 라우터 설정에 들어가서 설정을 할 수도 있고 OS에서 지원을 해주기도 합니다.

 

포트는 well-known, registered, dynamic port로 나뉘는데요.

  • Well-known ports : 0 ~ 1023
  • Registered ports : 1024 ~ 49151
  • Dynamic ports : 49152 ~ 65535

Well-known port에서 이미 잘 알려진 port는 아래와 같습니다.

Port Descriptions Port Descriptions
0 Reserved 53 DNS
20 FTP : for data 80 HTTP
21 FTP : for control 110 POP3
22 SSH 161 SNMP
23 TELNET 179 BGP
25 SMTP 443 HTTPS

22, 80번 port와 같이 눈에 익은 것도 있는데요. 조금 더 소개해드리자면 TELNET : 암호화되지 않은 텍스트 통신(인터넷을 통하여 호스트 컴퓨터에 접속할 때 사용하는 포트죠.), SMTP : Simple Mail Transfer Protocol라 하여 이메일 전송 프로토콜, DNS : Domain Name System, HTTP : HyperText Trasnfer Protocol이라 하여 웹 페이지 전송 프로토콜, HTTPS : HyperText Trasnfer Protocol over Secure Socket입니다. 2개만 더 소개해드리자면 123번 NTP : Network Time Protocol, 514번 Syslog : 시스템 로그 전송 프로토콜 정도는 엔지니어로 일하시는 분들이 자주 접할 수도 있는 포트번호입니다.(물론 저는 아직까지 직접 마주친 적은 없습니다.) 

 

Well-known 포트는 OS와 관계없이 동일하게 사용합니다. 잘 알려진 특정한 어플리케이션을 사용하기 위해 ICANN에서 할당한 TCP/UDP 포트 번호입니다.(강제적으로 지정된 것이 아니기에 다른 용도로 사용될 수도 있다고는 하는데 굳이 그럴 필요는 없겠죠.) 참고로 설명드리자면 TCP(Transmission Control Protocol): 신뢰성이 요구되는 애플리케이션에서 사용하는 프로토콜, UDP(User Datagram Protocol): 간단한 데이터를 빠른 속도로 전송하는 애플리케이션에서 사용하는 프로토콜입니다.

 

Register port는 어떤 기반을 거쳐 정의해서 사용 가능합니다. 이미 특정 용도로 사용되기 위해 등록된 포트번호입니다.(IANA에서 기관이나 사업자들을 위해 관리합니다.) 3306번 포트는 SQL을 사용하는 공개 소스의 RDBMS(관계형 데이터베이스 관리 시스템)를 사용하기 위한 포트이고요. 3389번 포트는 원격 접속을 사용하기 위한 포트입니다. 여러분에게 가장 익숙한 포트는 8080번 포트이겠네요. 8080번 포트는 HTTP 포트를 대체할 수 있는 포트입니다.(일반적으로 웹 서버에 사용한다고 하는군요. 전 아직 80포트와 8080포트의 차이를 정확하게 이해하진 못했습니다. 혹시 알고 계신 분이 있으시다면 댓글 부탁드립니다.)

 

Dynamic port는 다른 사람이 사용하지 않는다는 확인 후 49152부터 65535 사이에 포트를 만들어 사용할 수도 있습니다. 사용자가 사용할 수 있다는 거죠.

 

그럼 실제로 어떻게 되는지도 살펴보죠. 사실 방화벽이 포트를 대부분 막아 놓습니다. 숙적 연세대학교 서버로 attack을 보내보면 전달이 안될겁니다. Port scan 같은 공격이 들어 올 수 있기 때문에 대부분 시스템은 20, 21도 block하고 80번만 남겨놓는 경우도 많습니다. 온라인 게임같은 경우에는 일종의 운용 프로그램이기 때문에 well-known 포트를 사용할겁니다. 그렇다면 Dynamic port를 65535에서 더 늘릴 수는 없을까요?

프로토콜 표준을 관리하는 IANA가 있고요. 한사람만 사용하는 것이 아니라 상대방도 지켜줘야 하는 부분이기 때문에 마음대로 막 정의할 수는 없습니다.(16bit : 2^16 = 65536)

 

Port scan이란?

서비스를 제공하는 서버의 작동여부와 제공하고 있는 서비스를 확인하는 것으로 질의 (Request)를 보내면 응답(Response)을 받는 구조인 네트워크의 특성을 이용한다. 이 과정에서 네트워크상 다른 단말기의 정보를 얻어온다.

 

 

포트는 Security report에서도 종종 볼 수 있는데요.

https://blog.alyac.co.kr/1100

 

Trojan.Ransom.WannaCryptor 악성코드 분석 보고서

Trojan.Ransom.WannaCryptor 악성코드 분석 보고서 지난 주말부터 미국, 중국 등의 전세계 많은 국가로 WannaCry 랜섬웨어(Trojan.Ransom.WannaCryptor)가 전파되고 있습니다. 워너크라이(WannaCry)/워너크립터(..

blog.alyac.co.kr

WannaCry 랜섬웨어 같은 경우 SMB(Server Message Block)관련 포트인 137, 138, 139, 445번 포트를 이용해 컴퓨터로 침투했습니다. 이렇게 특정 포트를 통해 공격을 시도합니다. 그래서 포트번호가 Security report에서 종종 보실 수 있는 거죠.

 

 

이번 포스팅에선 port에 대해 알아보았습니다. 학부에서 배울 운영체제 과목과 아주 관련있다고는 할 수 없지만 이렇게 곁가지를 늘려가다보면 결국 다른 과목을 공부하거나 시야를 넓히는 데 도움이 되리라 생각합니다.

반응형

'학부공부 > OS_운영체제' 카테고리의 다른 글

18. Message Queue [Interesting topic to study]  (2) 2021.11.25
17. IPC(2)  (6) 2021.11.24
15. IPC(1)  (2) 2021.11.21
14. Process(3)  (0) 2021.11.17
13. Garbage collector [Interesting topic to study]  (0) 2021.11.15

댓글