☂️ React pre-track) CS5. network

Yeonn·2024년 8월 6일
0

elice_React Track

목록 보기
6/7
post-thumbnail

네트워크와 인터넷

🛜
네트워크: 서로 다른 기기( 컴퓨터 )가 통신하기 위해 유선 혹은 무선으로 연결되어 있는 것
인터넷: 여러 네트워크가 연결되어 있는 것

✔️ IP 주소( Internet Protocol address )

인터넷에서 서로를 식별할 때 ip 주소를 사용한다..으로 구별된 각 자리가 0에서 255 사이의 숫자로 나타내지고 192.168.123.123 같은 형태를 띄고 있다. Ip 주소는 mac의 경우 ipconfig getifaddr en0ifconfig로, 윈도우는 ipconfig로 확인할 수 있다.

✔️ PORT

📌 포트( PORT ) 번호
네트워크에서 컴퓨터나 기기의 특정 애플리케이션이나 서비스에 연결할 수 있도록 식별하는 번호

포트 번호는 IP주소 뒤에 콜론(:)로 구분하여 나타낸다. 예를 들어 192.168.123.123:3000의 경우 포트번호는 3000 이다. 이미 사용 중인 포트는 중복해서 사용할 수 없으며 중복 시 port already in use 포트번호 라는 error message를 받게 된다. 이 때에는 다른 포트를 이용하거나 필요없는 포트를 종료해야 한다.

  • 👩‍💻 MAC 명령어
// 열려있는 모든 포트 표시
netstat -anv

// LISTEN 중인 포트 표시( 응답 대기 중 )
netstat -anv | grep LISTEN

// 확인하려는 포트번호 상태 확인
netstat -anv | grep 포트번호

// 특정 포트번호를 확인하는 쉬운 방법
lsof -i :포트번호

✔️ DNS( Domain Name System )

📌 DNS: 도메인 이름과 IP 주소 간의 변환을 처리하는 시스템

우리는 다양한 인터넷 사이트를 이용하는데 필요한 모든 IP 주소를 외워서 인터넷을 이용하기는 힘들다. 그래서 필요한 것이 도메인이다. 도메인도 IP와 동일하게 인터넷에서 서로를 식별할 때 사용되는 고유한 이름이다. 다만 숫자가 아닌 문자로 구성되어 있다.

이 도메인 이름과 IP 주소 간의 변환을 처리하는 시스템이 바로 DNS( Domain Name System )이다.

DNS의 작동 서버 순서는 다음과 같다.

  • 웹 브라우저에 도메인 주소 입력 시 !
  • Root DNS Server( 최상위 도메인 검색 )
  • TLD DNS Server
  • Authoritative DNS Server

✔️ server ? client ?

다른 컴퓨터나 디바이스가 통신을 한다고 가정했을 때 서버( server )응답( response ) 하는 컴퓨터 시스템이고 클라이언트( client )요청( request )하는 컴퓨터 시스템이다.

클라이언트가 서버에 요청을 보내면 서버는 그 요청을 처리하고 결과를 클라이언트에게 반환한다. 서버와 클라이언트 모두 각각 호스트이고 서비스를 다른 클라이언트가 접근할 수 있도록 게시하는 것이 호스팅이다.

TCP( Trnasmission Control Protocol )

📌 신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜

TCP는 패킷( 네트워크 데이터 전송 단위 )의 손실을 검사하고 순서가 바뀌지 않도록 보장한다. UDP에 비해 안전성이 높기 때문에 파일, 이메일 전송 등 신뢰성이 중요한 통신에서 자주 사용된다.
TCP는 연결 시에는 3-Way Handshake 단계를 거치고 종료 시에는 4-Way Handshake 단계를 거친다.

3-Way Handshake( 연결 )
SYN( Synchronize Sequence Number ) 패킷과 ACK( Acknowledgement Number ) 패킷을 주고 받으면서 서로 통신을 시작할 준비가 되었는지 확인하는 과정이다. 클라이언트가 접속하면 서버에게 SYN 패킷을 전송하고 ACK 패킷을 요청한다. 통신 준비가 완료되면 서버는 SYN 패킷과 ACK 패킷을 클라이언트에게 응답으로 보내준다. 클라이언트가 SYN + ACK 패킷을 수신하고 ACK 패킷을 서버에게 전송하면 통신이 시작된다.

4-Way Handshake( 종료 )
FIN( Finish )패킷과 ACK( Acknowledgement Number ) 패킷을 주고 받으면서 TCP 연결을 종료할 준비가 되었는지 확인하는 과정이다. 클라이언트가 FIN 패킷을 서버에게 전송하면 서버가 클라이언트에게 ACK 패킷 응답 후 종료 준비 완료의 의미로 FIN 패킷을 응답해준다. 클라이언트가 ACK 패킷을 전송하고 통신이 종료된다.

서버가 보낸 데이터가 클라이언트에게 아직 도착하지 않았을 때 연결이 종료될 경우 데이터 유실의 위험이 있다. 한번 더 종료 의사를 묻는 과정을 추가하여 안전성을 향상 시킨 것이다.

UDP( User Datagram Protocol )

📌 신호 절차 없이 일방적으로 데이터를 전달하는 비연결형 프로토콜
TCP에 비해 데이터의 신뢰성은 낮지만 속도가 빠르다. 스트리밍 처럼 데이터가 일부 손실되더라도 빠른 데이터 전송이 중요한 경우 사용된다.



HTTP

Hypertext Transfer Protocol

HTTP는 웹 브라우저와 웹 서버 간의 통신에서 HTML 문서, 이미지, 오디오, 비디오 등의 리소스를 전송하기 위해 사용하는 규칙이다. 클라이언트는 서버에게 HTTP 요청 메시지를 전송하고 서버는 클라이언트에게 HTTP 응답 메시지로 응답한다.

✔️ HTTP 특징

  • Stateless: 무상태성

    • 서버가 클라이언트의 상태를 보존하지 않음 ( = 저장하지 않음 )
    • 클라이언트의 요청은 독립적으로 처리되며 서버는 '요청에 대한 응답만' 전송
    • 서버의 확장성을 높일 수 있음
  • Connectionless: 비연결성

    • 클라이언트의 요청과 서버의 응답 사이에 연결을 유지하지 않음
      • 요청에 대한 응답을 줌과 동시에 연결을 끊는다 !
  • 서버는 불필요한 연결을 줄이고 많은 클라이언트의 요청을 동시에 처리 가능

✔️ HTTPS( Hypertext Transfer Protocol Secure )

HTTPS는 기존 HTTP 프로토콜에서 데이터를 암호화하고 인증하는 과정을 추가하여 보안을 강화한 프로토콜이다. HTTP 프로토콜은 포트 번호 80을 사용하지만 HTTPS는 433번을 사용한다.

HTTP message


HTTP 메세지는 Start Line, Header, Blank Line, Body로 이루어져 있다. 요청 메시지와 응답 메시지에 따라 담기는 내용에 차이가 있다.

❗️ HTTP 요청 메세지

✔️ Start Line

  • HTTP Method: 요청의 의도( GET, POST, PUT, DELETE 등 )
  • Request target: 요청하는 대상의 URL
  • HTTP version: HTTP 프로토콜 버전
    • 버전에 따라 메시지 구조가 다를 수 있기 때문에 명시해주어야 한다 !

✔️ Header

  • Header Field의 다양한 종류
    • Host: 요청하는 호스트의 이름 및 포트 번호
    • User-agent: 클라이언트가 사용하는 웹 브라우저 정보
    • Referer: 직전에 머물렀던 웹 사이트 URL
    • Accept: 클라이언트가 원하는 데이터 타입 및 우선 순위
    • If-Modified-Since: 값으로 지정한 날짜 이후에 수정된 자원을 요청
    • Authorization: 클라이언트가 가지고 있는 서버에 대한 권한 정보
    • Origin: 요청이 시작된 주소 정보
    • Cookie: 서버에 의해 설정된 클라이언트의 쿠키 정보
    • ……

❗️ HTTP 응답 메세지

✔️ Start Line

  • HTTP version: HTTP 프로토콜 버전
  • Status Code: 요청에 대한 성공, 실패 같은 상태 정보
    • 200번 대: 성공
    • 300번 대: 리다이렉션
    • 400번 대: 클라이언트의 오류
    • 500번 대: 서버의 오류
  • Status message: 응답 상태에 대한 설명

✔️ Header

  • Header Field에는 다양한 종류
    • Location: 리다이렉션 해야하는 페이지의 URL( 300번 대 Status Code )
    • Server: 서버에서 사용하는 소프트웨어 정보
    • Age: 응답이 생성되고 지난 초 단위의 시간
    • Referrer-Policy: 요청 메시지에 포함할 Referer 정보의 양을 제어
    • WWW-Authenticate: 클라이언트가 서버에 인증해야 하는 방식
    • Proxy-Authenticate: 클라이언트가 프록시 서버로 인증 정보를 보내는 방식
      • 프록시 서버: 클라이언트 - 서버 중계 역할을 하는 서버
    • Content-Type: 응답되는 메시지의 데이터 타입

✔️ HTTP 외 기타 프로토콜

  • SMTP( Simple Mail Transfer Protocol ): 전자 메일을 보내는 데 사용되는 프로토콜
  • FTP( File Transfer Protocol ): 클라이언트와 서버 간에 파일 전송을 위한 연결을 설정하고 파일을 업로드 및 다운로드 할 수 있게 해주는 프로토콜
  • SSH( Secure Shell ): 클라이언트가 서버에 로그인하여 원격으로 컴퓨터를 제어하거나 파일 전송 등을 할 수 있게 해주는 프로토콜
  • DHCP( Dynamic Host Configuration Protocol )
  • POP3( Post Office Protocol version 3 )
  • IMAP( Internet Message Access Protocol )
  • SNMP( Simple Network Management Protocol )


보안

✔️ SSL( Secure Sockets Layer )

📌 클라이언트와 서버 간에 전송되는 데이터를 암호화하여 통신을 보호하고 보안을 유지하기 위해 사용되는 프로토콜

SSL은 1990년 대 초반에 만들어져 현대에는 여러 취약점과 보안 이슈 발생가 발생하여 이를 보완하기 위해 TLS로 대체되었다.

✔️ TLS( Transport Layer Security )

📌 SSL 에서 보안성 강화된 것 !

SSL과 동일한 기능을 하면서 보안성이 더욱 강화한 것이 TLS이다.

  • 웹 브라우저와 서버 간의 통신, 이메일 및 파일 전송 등 다양한 곳에서 사용
    • HTTPS ( HTTP + S ) = HTTP + TLS
    • FTPS ( FTP + S ) = FTP + TLS
    • SMTPS ( SMTP + S ) = SMTP + TLS

0개의 댓글