Spring Boot의 경우 8080번 Port를 사용하고 React 같은 경우 3000번 Port를 사용한다. HTTP의 경우 80번 Port를 사용하고 SSH의 경우 22번 포트를 사용한다.
그러면 HTTPS의 경우 몇 번 Port를 사용할까? 그리고 여기서 말하는 Port는 무엇일까? 마지막으로 HTTPS와 HTTP의 차이 그리고 어떻게 우리가 만든 프로젝트에 HTTPS를 적용할 수 있을까?
먼저 Port 번호란 무엇일까?
서버와 클라이언트 사이 혹은 서버와 서버 사이의 통신을 할 때 사용 되는 요청과 응답이 지나가는 '도로'라고 생각하면 된다. 정해진 포트로 해당하는 요청이 들어오고 포트번호는 중복될 수 없다. IP주소와는 다른 개념이다. IP 주소는 나의 서버가 포함된 기기의 위치를 표시한다면 Port의 경우 서버 안의 특정 application을 지목한다고 생각하면 된다. 대부분의 Application이 고유의 포트 번호가 있고 다를 경우 요청들을 특정 Port번호에서 다른 Port번호로 옮겨 주는 과정이 필요하다. 예를 들어 React의 경우 3000번 포트를 사용하지만 Spring Boot의 경우 8080번 포트를 사용한다. 그래서 이런 차이를 극복하기 위해 CORS(Cross-Origin Resource Sharing)이 있다.
아래는 대표적인 예약된(Reserved) Port번호다.(아 그냥 이런게 있구나 하면 된다. 그래도 색깔 쳐져 있는 부분은 눈에 익혀두면 좋다.)
요청 종류 | 포트번호 | 용도 |
HTTP | 80 | 암호화 되지 않은 웹 요청 |
HTTPS | 443 | 암호화된 웹 요청 |
FTP | 32 | File Transfer Protocol |
SSH | 22 | SSH통신을 위한 요청(Secure Shell) |
SMTP | 25 | 이메일 전송 |
POP3 | 110 | 이메일 수신(POP3를 이용한) |
IMAP | 143 | 이메일 수신(IMAP를 이용한) |
DNS | 53 | DNS 전용(Domain Name System) |
MySQL | 3306 | MySQL과의 연결을 위해 사용 |
RDP | 3389 | Remote Desktop Protocol |
Spring Boot | 8080 | Spring Boot 기본 Port 번호 |
React | 3000 | React 기본 Port 번호 |
HTTP와 HTTPS는 무엇일까?
HTTP와 HTTPS의 가장 큰 차이는 마지막 S에 있다. Secure 즉 보안에 특화 돼있는게 HTTPS다.
아래의 링크를 타고 들어가서 구체적인 내용을 확인하자.
여기서 핵심 적인 차이를 말하자면 HTTP는 Application Layer를 사용하고 HTTPS는 Transport Layer를 사용한다는 점이다.
HTTPS에서 SSL/TLS를 통해서 HTTP요청을 암호화 하고 요청이 올바른 곳에서 왔다는 서버에게 확신을 주는 거와 같다.
그럼 위의 내용과 HTTPS의 특징을 생각해보면 총 두 가지가 필요하다는 결론에 다다른다.
- 특정 Port에서 온 요청을 다른 Port로 옮겨 주는 장치
- SSL/TLS와 같이 요청을 암호화 하는 장치
이 두가지가 필요하다. 그래서 첫 번째를 위해서 Nginx를 사용하고 SSL/TLS를 위해서 Certbot을 사용할 예정이다.
다음편
Spring Boot 개발 노트 : 프로젝트 HTTPS 적용 2
* 항상 정확한 정보를 드리고 싶지만 실수가 있을 수도 있습니다!
* 실수를 찾게 되거나 질문이 있으시면 댓글 달아주세요!!
'Backend Dev. > Project Impl' 카테고리의 다른 글
Spring Boot 개발노트: 프로젝트 HTTPS 적용 2편 (0) | 2023.12.14 |
---|---|
Spring Boot 개발 노트: S3를 이용해 프로젝트에 이미지관련 CRUD 구현 2편 - Spring Boot 설정 (0) | 2023.12.13 |
Spring Boot 개발노트: application.properties .gitignore에 추가 (0) | 2023.12.12 |
Spring Boot 개발 노트: S3를 이용해 프로젝트에 이미지관련 CRUD 추가하기 - S3 & IAM 설정 (0) | 2023.12.05 |