Port
Port란, 논리적인 접속 장소를 의미합니다. TCP/IP를 사용할때 클라이언트가 네트워크 상에서의 특정 서버 프로그램을 지정하여 사용합니다.
IP : 컴퓨터를 찾을 때 필요한 주소
Port : 그 컴퓨터 안에서 연결하고자 하는 프로그램을 찾기위한 수단.
- 각각의 응용프로그램은 정해져있는 포트 번호를 이용합니다. 이 포트 번호를 전송 계층에서 이용하여 프로그램을 구분 합니다.
Well Known Port
서버 측에서 용도별로 포트번호를 정해서 동작되고 있고 클라이언트가 이 포트번호를 이용하여 접속합니다.
이러한 포트를 Well Known Port(잘 알려진 포트) 라고 합니다.
1~1023번 까지존재하고 이미 예약되어있습니다.
종류
- 1 : TCP Port Service Multiplexer
- 7 : ECHO (echo)
- 13 : DAYTIME
- 21 : FTP(File Transfer Protocal) : 파일 전송 프로토콜
- 22 : SSH(Secure Shell) : 다른 사용자가 세션을 접근하지 못하도록 세션을 보안
- 25 : SMTP : 메일 메시지 전송 프로토콜
- 53 : DNS : 영문이나 한글 주소를 네트워크에서 찾아갈 수 있는 IP로 변환
- 80 : HTTP : 웹전송
- 123 : NTP(Network Time Protocol)
HTTP(Hyper-Text Transfer Protocol)
HTTP란, 웹 상에서 웹 서버와 웹 브라우저 사이에 데이터 전송을 위한 응용계층 프로토콜
과거에는 문서(하이퍼텍스트 문서)의 형태만 전달하는데 사용되었지만 현재는 이미지, 비디오 음성 등 모든 데이터 전송이 가능합니다.
추가로 웹뿐만아니라 모바일, IoT와 같은 통신에도 사용됩니다.
특징
- 요청과 응답 구조
- 서버에게 요청을 보내는 클라이언트
- 클라이언트로 부터 요청을 받아 응답하는 서버
- 메시지 교환 프로토콜
- 클라이언트와 서버간의 HTTP 메시지를 주고받으면서 통신합니다.
- 이는 SMTP 방식과 유사합니다.
- 트랜잭선 중심의 비연결성 프로톹콜
- 서버가 응답한 후에는 연결이 끊어집니다. -> 비연결성(Connectionless)
- 서로의 요청과 응답 사이에 어떤 상태나 데이터를 유지하지 않습니다 -> 무상태(Stateless)
- 일반적으로 안전한 TCP/IP를 기반으로 합니다.
- 포트번호 : 80
- 암호화에 대해 부족한 문제가 있었지만 이를 해결하기 위해 HTTPS가 등장했다.
HTTP는 TCP/IP 프로토콜 위에서 동작합니다.
HTTP는 데이터 교환을 위해 사용되고 TCP는 데이터 전송을 위해 사용됩니다.
동작과정
서버의 서비스를 필요로하는 사용자가 브라우저를 통해 URI로 서버에게 요청하면 서버는 그에 대한 결과를 응답
- TCP Connection
- 서버에 접속하기 위해 TCP 연결합니다.
- TCP 연결을 요청을 보내거나 응답을 받는데 사용됩니다.
- 서버에 대한 여러 TCP 연결을 열 수 있습니다.
- HTTP 메시지 전송(요청)
- 서버로부터 응답을 확인(응답)
- TCP 연결을 끊거나 다른 요청을 위해 재사용합니다.
HTTP Message
요청
구조
- HTTP Method와 Path, 프로토콜 종류와 버전이 존재
- HTTP Header와 리소스를 요청하는 경로(어디서 보냇는지) 존재
HTTP Method
- GET: 클라이언트가 서버에 리소스를 요청할 때.
- POST: 클라이언트가 서버의 리소스를 새로 만들 때.
- PUT: 클라이언트가 서버의 리소스를 수정할 때.
- DELETE: 클라이언트가 서버의 리소스를 삭제할 때.
응답
구조
- 프로토콜 종류, 버전, HTTP 상태코드(요청과 응답에 대한 결과를 나타내는 코드), HTTP 상태 메시지(요청과 응답해 대한 결과를 나태내는 문구)
- HTTP 응답 Header(응답에 대한 정보들을 저장)
- 응답할 데이터가 존재할때에는 Http body에 저장한다.
HTTP 상태 코드
- 1xx : 정보, 요청을 받았고 계속 진행중
- 2xx : 성공 : 요청이 성공적
- 3xx : 리다이렉션 : 요청 완료를 위해 추가 조치 필요
- 4xx : 클라이언트 오류 : 요청중 에러 밟생
- 5xx : 서버 오류 : 서버에서 에러 발생
HTTPS (Hyper-Text Transfer Protocol Secure)
이름 그대로 HTTP에 암호화가 추가된 프로토콜입니다.
인터넷 상에서 정보를 암호화하는 SSL 프로토콜(또는 TLS)을 이용하여 클라이언트와 서버가 통신하는 프로토콜
TLS : Transport Layer Security 프로토콜
- 공개키 암호화 방식을 사용
- 포트번호 443
- HTTP에 비해 속도가 느리다(요즘은 큰차이가 없다)
- 암호화를 진행하는데 추가 비용이 발생한다(인증서 발급)
- 검색엔지니에 최적화가 되어있습니다.
동작방식
- 클라이언트는 서버에게 HTTPS 요청을 합니다.
- 서버의 SSL/TLS 인증서를 확인하고, 암호화 알고리즘과 암호화 키를 협상합니다.
- 이 과정을 SSL/TLS 핸드셰이킹이라고 합니다.
- 클라이언트는 협상된 알고리즘와 암호화 키로 데이터를 암호화 해서 전달합니다.
- 서버는 클라이언트의 요청을 처리하고, 암호화된 데이터를 응답합니다.
- 클라이언트는 응답을 받고 복호화 하여 응답 페이지를 렌더링 합니다.