네트워크

jeongjwon·2023년 5월 1일
0

SEB FE

목록 보기
44/56

IP Packet

회선 교환

발신자 -> 전화교환원(오퍼레이터) -> 수신자
발신자와 수신자 사이에 데이터를 전송할 전용선을 미리 할당하고 연결 -> 즉시성이 떨어짐

패킷 교환

회선 교환 해결
데이터를 패킷(출발지와 목적지 정보가 담김) 단위로 나누어 전송


packet = pack + bucket
데이터 통신에 적용한 것으로 출발지 IP, 목적지 IP, 전송 데이터 등이 담김

비연결성 => 패킷을 받을 대상이 없어도 , 서비스 불능 상태여도 패킷 전송
비신뢰성 => 중간에 패킷이 소실될 가능성, 순서를 보장할 수 없음





TCP/UDP

HTTP 메시지가 Socket 을 통해 전달되어 TCP 정보를 생성(HTTP 메시지 포함)
IP패킷 생성(TCP 데이터 포함)되고 이더넷 프레임으로 새성되어 서버로 보내짐
TCP segment : IP 패킷의 출발지 IP와 목적지 IP 정보를 보완할 수 있는 출발지 PORT, 목적지 PORT, 전소제어, 순서, 검증 정보 포함

TCP (Transmission Control Protocol) - UDP에 비해 상대적으로 신뢰가능

  • 연결지향 : TCP 3way handshake
  • 데이터 전달 보증
  • 순서 보장
  • 신뢰할 수 있는 프로토콜

UDP (User Datagram Protocol)

  • 비연결 지향 ➡️ 빠른 속도 보장
  • 데이터 전달 보증 x
  • 순서 보장 x
  • 신뢰성보다는 연속성이 중요(실시간 스트리밍)



네트워크 계층 모델

OSI 7계층

계층설명종류
물리 계층시스템 간의 물리적인 연결과 전기 신호를 변환 및 제어하는 계층디지털 or 아날로그 신호 변경
데이터링크 계층네트워크 기기 간의 데이터 전송 및 물리주소 결정 계층, 주소 정보 정의하고 출발지와 도착지 주소 확인 후 데이터 처리 수행브리지 및 스위치, MAC 주소
네트워크 계층실제 네트워크 간에 데이터 라우팅(최대한 빠르게 보낼 최적의 경로 선택)IP 패킷 전송
전송 계층컴퓨터 간 신뢰성 있는 데이터를 서로 주고 받을 수 있도록 하는 서비스 제공 계층TCP/UDP
세션 계층세션 연결의 설정과 해제, 세션 메시지 전송 등의 기능 수행 계층, 컴퓨터 간의 통신방식 결정-
표현 계층응용 계층으로 전달하거나 전달받은 데이터를 인코딩 or 디코딩하는 계층문자코드, 압충, 암호화 등의 데이터 변환
응용 계층사용자와의 인터페이스 제공 계층이메일 및 파일 전송, 웹 사이트 조회 HTTP

각 계층은 독립적이므로 데이터가 전달되는 동안에 다른 계층의 영향을 받지 않는다.

데이터 캡슐화는 송신 측에서 이루어진다.사용자 데이터가 각 계층을 지나면서 하위 계층은 상위 계층에서 온 정보를 데이터로 취급한다. 그리고 자신의 계층의 특성을 담은 정보를 헤더에 붙히는 과정을 반복하는데 이를 데이터 캡슐화라고 한다.
반면, 수신 측에서는 반대로 헤더를 까면서 데이터가 상위 계층으로 올라가 결국 마지막 응용 계층에서는 원본 데이터만 남는데 이것을 데이터 역 캡슐화라고 한다.


TCP/IP 4계층

계층설명종류
네트워크 인터페이스 계층OSI 계층의 물리 + 데이터 링크 계층, 물리적인 주소로 MAC 사용LAN, 패킷망
인터넷 계층OSI 계층의 네트워크 계층, 통신 노드 간의 IP 패킷 전송하는 기능 및 라우팅IP, ARP, RARP
전송 계층OSI 계층의 전송 계층, 통신 노드 간의 연결 제어, 신뢰성 있는 데이터 전송 담당TCP/UDP
애플리케이션 계층OSI 계층의 세션 + 표현 + 응용 계층 , TCP/UDP 기반의 응용 프로그램 구현시 사용FTP, HTTP, SSH


HTTP

버전지원
HTTP/0.9GET메서드만 지원, HTTP 헤더X
HTTP/1.0메서드, 헤더 추가
HTTP/1.1현재 사용 중, 가장 중요한 버전
HTTP/2성능 개선
HTTP/3TCP 대신 UDP 로 성능 개선 진행 중

① 클라이언트 서버 구조

  • 클라이언트는 서버에게 TCP 연결을 시작하고 이루어지면 소켓 인터페이스를 통해 브라우저와 서버는 TCP로 접속한다. Request 와 Response 를 소켓 인터페이스를 통해 주고 받는다. ➡️ 신뢰적인 데이터 전송

무상태 프로토콜 Stateless Protocol

  • 서버가 클라이언트에게 요청을 보낼 때, 서버는 클라이언트에 관한 어떠한 상태 정보를 저장하지 않는다. ➡️ 서버 확장성이 높음(스케일 아웃), 클라이언트가 추가 데이터 전송 필요

비연결성

  • 실제 요청을 주고 받을 때만 연결을 유지하고 응답을 주면 TCP/IP 연결을 끊는다. ➡️ 최소한의 자원으로 서버 유지 가능, 효율적, 트래픽이 많고 큰 규모의 서비스 운영 시 한계

④ HTTP 메시지

  • 표현 헤더 : 표현 데이터를 해석할 수 있는 정보 제공 , field-name:field-value
    - Content-Type, Content-Encoding, Content-Language, Content-Length

  • 메세지 본문 Message Body : 데이터 전달 => 페이로드

  • 요청 헤더
    From : 유저 에이전트의 이메일 정보
    Referer : 이전 웹 페이지 주소 , 유입 경로 수집 가능
    Host : 요청한 호스트 정보(도메인) , 필수, 하나의 서버가 여러 도메인을 처리해야할 때
    Origin: 서버로 POST 요청을 보낼 때 요청을 시작한 주소 나타냄 , 요청 보낸 주소와 받는 주소가 다르면 CORS 에러 발생, Access-Control-Allow-Origin 과 관련
    Authorization : 인증 토큰을 서버로 보낼 때 , 토큰 종류 + 실제 토큰 문자 전송

  • 응답 헤더
    Server : 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보
    Date : 메시지가 발생한 날짜와 시간
    Location : 3xx 응답 결과에 Location 헤더가 있으면 이 위치로 자동 이동, 201 응답은 요청에 의해 생성된 리소스 URI
    Allow : 허용 가능한 HTTP aptjem, 405에서 응답에 포함
    Retry-After : 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간, 503 dmdekq
    ⑤ 단순함, 확장 가능



HTTPS

HTTP Secure : HTTP 와 달리 요청과 응답의 내요을 암호화하므로써 기존의 HTTP 프로토콜을 더 안전하게 사용할 수 있도록 함.

암호화 방식

암호화할 때 사용할 키와 복호화할 때 사용할 키의 개수에 따른 방식

대칭 키비대칭 키 (공개 키)
하나의 키만 존재두 개의 키(공개키, 비밀키)가 존재
빠른 연산 속도 , 키를 관리해야하는 신경비밀키로만 복호화 가능, 보안성이 뛰어남, 복잡한 연산으로 많은 시간 소모 ➡️ 클라이언트와 서버가 함께 사용하게 될 대칭키를 주고 받을 때 사용

SSL/TLS 프로토콜

HTTPS 가 서버인증과 데이터 암호화를 진행하는 HTTP 통신을 하는 소켓부분에서 사용하는 프로토콜

  • CA(Certificate Authority)를 통한 인증서 사용 : 공인된 기관 CA 로 서버의 정보와 공개 키를 전달하면 CA는 서버의 공개키와 정보를 CA의 비밀키로 암호화하여 인증서를 발급한다. 클라이언트는 CA 공개키를 가지고 있다면 서버에서 보낸 CA의 비밀키로 암호화된 인증서를 복호화하므로써 성공적으로 응답할 수 있다.

0개의 댓글