포트(PORT) 번호 - 네트워크에서 컴퓨터나 기기의 특정 애플리케이션이나 서비스에 연결할 수 있도록 식별하는 번호
ex)IP 주소는 아파트 , 포트번호는 호수
포트 번호
- 포트 번호는 IP 주소 뒤에 콜론(:)으로 구분하여 나타냄
- ex)127.0.0.1:3000
- 위 경우는 포트 번호가 3000번 임을 나타냄
- 사용 중인 포트는 중복해서 사용할 수 없음
- 중복해서 사용하려는 경우 'port already in use 3000'과 같은 에러를 만나게 됨
- 해당 에러를 해결하려면 다른 포트를 이용하거나, 필요 없는 포트를 종료해야 함
DNS(Domain Name System) - 도메인 이름과 IP 주소 간의 변환을 처리하는 시스템, 인터넷 서비스 제공자(ISP)가 제공하는 DNS 서버를 통해 실행
최상위 도메인(Top-level domain, TLD) : 도메인 이름의 가장 오른쪽 부분으로 국가 코드나 일반 TLD 등의 형태로 구성되며, 전 세계적으로 공유
국가코드 ex).kr, .com, .us
TCP/UDP
프로토콜(Protocol) - 네트워크에서 서로의 컴퓨터가 원활한 인터넷 통신을 하기 위한 규칙
ex) IP : 인터넷에서 데이터를 주고 받는 규칙
TCP(Transmission Control Protocol) - 신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜, 패킷의 손실을 검사하고 순서가 바뀌지 않도록 보장
-안전성이 높은 통신을 가능하게 해줌
-주로 파일을 전송하거나 이메일을 전송하는 등 신뢰성이 중요한 통신에서 자주 사용됨
※패킷 : 네트워크에서 데이터를 전송하는 단위
UDP(User Datagram Protocol) - 신호 절차 없이 일방적으로 데이터를 전달하는 비연결형 프로토콜, 데이터의 신뢰성은 낮지만 속도가 빠름
- 데이터가 일부 손실되더라도 빠른 데이터 전송이 중요한 실시간 스트리밍에서 많이 사용됨
- UDP는 신호 절차 없이 일방적으로 데이터를 전달하는 비연결형 프로토콜임
HTTP
-HTTP 프로토콜은 포트 번호 80을 사용하지만, HTTPS는 433번을 사용함
HTTP 메시지
요청 메시지
- HTTP Method : 요청의 의도 (GET, POST, PUT, DELETE 등)
- Request target : 요청하는 대상의 URL
- HTTP version : HTTP 프로토콜 버전
HTTP 요청 메시지
- Host : 요청하는 호스트의 이름 및 포트 번호
- User-agent : 클라이언트가 사용하는 웹 브라우저 정보
- Referer: 직전에 머물렀던 웹 사이트 URL
- Accept : 클라이언트가 원하는 데이터 타입 및 우선 순위
- If-Modified-Since : 값으로 지정한 날짜 이후에 수정된 자원을 요청
- Authorization : 클라이언트가 가지고 있는 서버에 대한 권한 정보
- Origin : 요청이 시작된 주소 정보
- Cookie : 서버에 의해 설정된 클라이언트의 쿠키 정보
응답 메시지
HTTP 응답 메시지
- Location : 리다이렉션 해야하는 페이지의 URL
- Server : 서버에서 사용하는 소프트웨어 정보
- Age : 응답이 생성되고 지난 초 단위의 시간
- Referrer-Policy : 요청 메시지에 포함할 Referer 정보의 양을 제어
- WWW-Authenticate : 클라이언트가 서버에 인증해야 하는 방식
- Proxy-Authenticate : 클라이언트가 프록시 서버로 인증 정보를 보내는 방식
- Content - Type : 응답되는 메시지의 데이터 타입
※프록시 서버 : 클라이언트와 서버 간의 인터넷 연결에서 중계 역할을 하는 서버
기타 프로토콜
SMTP(Simple Mail Transfer Protocol) - 전자 메일을 보내는 데 사용되는 프로토콜
FTP(File Transfer Protocol) - 클라이언트와 서버 간에 파일 전송을 위한 연결을 설정하고, 파일을 업로드 및 다운로드 할 수 있게 해주는 프로토콜
위 그림은 FTP가 Passive모드로 작동되는 그림
SSH(Secure Shell) - 클라이언트가 서버에 로그인하여 원격으로 컴퓨터를 제어하거나 파일 전송 등을 할 수 있게 해주는 프로토콜
보안
SSL(Secure Sockets Layer) - 클라이언트와 서버 간에 전송되는 데이터를 암호화하여 통신을 보호하고 보안을 유지하기 위해 사용되는 프로토콜
※SSL은 1990년대 초반에 만들어져서 현재는 여러가지 취약점과 보안 이슈가 많이 발견 되서 TLS를 사용함
TLS(Transport Layer Security) - SSL과 동일한 기능을 하면서 보안성이 더욱 강화되었음, 웹 브라우저와 서버 간의 통신, 이메일 및 파일 전송 등 다양한 곳에서 사용
ex) HTTP + TLS => HTTPS , FTP + TLS => FTPS, SMTP + TLS => SMTPS
인증 및 인가 - 보안적인 측면에서 사용자가 누구인지 확인하는 인증과 사용자가 접근할 수 있는 자원에 대한 권한을 부여하는 인가가 중요
쿠키 - 서버에 의해 클라이언트에 저장되는 데이터 파일, 서버의 부하가 줄어들지만, 탈취되면 개인정보가 노출될 수 있음
세션 - 클라이언트의 상태정보를 서버측에서 유지, 보안성은 높지만 서버에 많은 자원이 필요하기 때문에 부하가 걸릴 수 있음
두 가지의 쿠키, 세션 방식의 단점을 보완하기 위한 방법 JWT
JWT를 쓰는 이유 - 서버에서 토큰 정보를 유지하지 않아도 되기 때문에 서버에 대한 부담을 줄일 수 있으며, 서명을 통해 위조나 변조를 감지할 수 있고 유효 기간 설정을 통해 보안성을 높일 수 있음
'CS' 카테고리의 다른 글
Microservices Architecture, MSA)란? (0) | 2025.04.09 |
---|---|
[프로그래밍 언어론] BNF와 EBNF (0) | 2024.10.03 |