Unit6 회고

YEN J·2022년 11월 9일
0

code states

목록 보기
32/43

[네트워크] 심화

🔆 TCP/IP

네트워크의 시작

네트워크 구축 방식
: 회선교환 방식과 패킷교환 방식

회선교환 방식❓
회선교환 방식이란 발신자와 수신자 사이에 있는 오퍼레이터가 통신 시작 전 미리 전용 회선을 설정해야하는 네트워크 방식을 말한다. 통신 중에서는 발신자와 수신자 외 다른 사람이 개입할 수 없으며 연결이 끊어져야 다른 사람과 연결(통신)이 가능하다.
회선교환 방식

패킷교환 방식❓
패킷교환 방식이란 패킷 단위로 데이터를 잘게 나누어 전송하는 방식을 말한다. 좀 더 구체적으로 설명하면 IP가 출발지와 목적지 정보를 IP주소라는 특정한 숫자값으로 표기하고 패킷 단위로 데이터를 전송하는 방식을 의미한다. 이 방식은 전용 회선을 사용하지 않기 때문에 데이터를 전송하는 동안만 네트워크 자원이 사용된다.
패킷교환 방식

IP/IP Packet

복잡한 네트워크 속에서 클라이언트와 서버가 제대로 통신하기 위해서는 규칙이 필요하며 이를 위해 IP는 컴퓨터에 IP주소를 부여패킷 단위로 데이터를 전송하며 통신한다

  • IP Packet(pack+bucket)
    • 통신을 위한 소포
    • 출발지 IP, 목적지 IP 등의 정보 포함
    • 클라이언트에서 패킷 단위로 전송 시 노드들이 클라이언트 패킷을 통해 데이터를 전달
    • 서버에서는 서버 패킷을 통해 응답 전달
  • IP Packet의 한계
    • 비연결성
      • 패킷을 받을 대상의 부재나 서비스 불능 상태 시에도 패킷 전송
    • 비신뢰성
      • 패킷 소실 가능성 존재
      • 패킷의 도착 순서 불확실

TCP/UDP

메시지 교환 예시로 보는 TCP/IP 패킷 사용🤓

  1. HTTP 메시지 생성
  2. Socket을 통해 전달
    • Socket: 네트워크 환경에서 연결할 수 있게 만들어진 연결부
  3. IP 패킷 생성 전, TCP 세그먼트 생성(메시지 데이터 포함)
  4. IP 패킷 생성(TCP 데이터 포함)
  5. 생성된 TCP/IP 패킷은 물리적 계층을 지나기 위해 이더넷 프레임워크에 포함되어 서버로 전송

TCP/IP 패킷

  • TCP 세그먼트

    • 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증 정보 등을 포함
    • IP 패킷의 출발지 IP와 목적지 IP 정보를 보완
  • TCP 특징

    • 연결 지향 - TCP 3 way handshake(가상 연결)

      1. 클라이언트 측에서 서버에 접속을 요청하는 SYN 패킷 전송
      2. 서버는 요청을 수락 시 ACK와 SYN가 설정된 패킷 전송
      3. 클라이언트는 확인 후 서버에게 다시 ACK 전송
      4. 연결이 성립되며 데이터 전송 가능
    • 데이터 전달 보증

      • 데이터 전송 성공 시 응답을 돌려주므로 IP 패킷의 한계인 비연결성 보완 가능
    • 순서 보장

      • 패킷이 순서대로 도착하지 않을 경우 TCP 정보를 기반으로 패킷 재전송 요청을 통해 비신뢰성 보완 가능
    • 신뢰할 수 있는 프로토콜

      • UDP와 비교: UDP는 IP 프로토콜에 PORT, 체크섬 필드 정보만 추가된 단순한 프로토콜로 신뢰성보다 연속성이 중요한 서비스에 주로 사용됨

      • TCP vs UDP

        TCPUDP
        연결지향형 프로토콜비 연결지향형 프로토콜
        전송 순서 보장전송 순서 보장x
        데이터 수신 여부 확인데이터 수신 여부 확인x
        신뢰성 높고 속도 느림신뢰성 낮고 속도 빠름

🔆 네트워크 계층 모델

네트워크 계층 모델의 목적🌐
1. 표준화를 통한 포트, 프로토콜의 호환 문제 해결
2. 네트워크 시스템에서 발생하는 일을 계층 모델로 설명 가능
3. 문제 발생시 관리자가 원인의 범위를 확정하는데 도움

OSI 7계층 모델

  • OSI 7계층 모델 계층 구분
    • 1계층(물리 계층): 시스템 간의 물리적 연결과 전기 신호를 변환 및 제어하는 계층
    • 2계층(데이터링크 계층): 네트워크 기기 간 데이터 전송 및 물리주소를 결정하는 계층
    • 3계층(네트워크 계층): 실제 네트워크 간 데이터 라우팅을 담당하는 계층
    • 4계층(전송 계층): 컴퓨터 간 신뢰성 있는 데이터를 서로 주고받을 수 있도록 하는 서비스를 제공하는 계층
    • 5계층(세션 계층): 세션 연결의 설정과 해제, 세션 메시지 전송 등의 기능을 수행하는 계층(컴퓨터 간 통신 방식에 대해 결정하는 계층)
    • 6계층(표현 계층): 데이터를 응용 계층으로 전달하거나 전달받은 데이터를 인코딩이나 디코딩하는 계층
    • 7계층(응용 계층): 최종적으로 사용자와의 인터페이스를 제공하는 계층
  • 데이터 캡슐화
    • 캡슐화
      : 데이터를 전송하는 쪽에서 상위 계층에서 하위 계층으로 데이터를 전달하며 헤더(각 계층에서 필요한 정보)를 붙여나가는 것
    • 역캡슐화
      : 데이터를 수신하는 쪽에게 원본 데이터를 전달하기 위해 하위 계층에서 상위 계층으로 전달하며 각 계층의 헤더를 제거해 나가는 것

TCP/IP 4계층 모델

  • TCP/IP 4계층 모델 계층 구분
    • 1계층(네트워크 인터페이스 계층): 네트워크의 하드웨어를 제어하는 계층으로 물리적인 주소로 MAC을 사용
    • 2계층(인터넷 계층): 통신 노드 간의 IP패킷을 전송하는 기능 및 라우팅을 담당하는 계층
    • 3계층(전송 계층): 통신 노드 간의 연결 제어, 신회성 있는 데이터 전송 담당
    • 4계층(어플리케이션 계층): TCP/UDP 기반의 응용 프로그램을 구현할 때 사용

🔆 HTTP

HTTP의 특징

HTTP/1.1, HTTP/2는 TCP 기반이며 HTTP/3는 UDP 기반 프로토콜

  • HTTP 특징
    • 클라이언트/서버 구조: 요청과 응답 형식
    • 무상태 프로토콜(Stateless)
      : 서버가 클라이언트의 상태를 보존하지 않아 클라이언트 측에서 상태를 기억해야 함
      • 이점
        스케일 아웃: 응답 서버를 쉽게 바꿀 수 있어 서버 확장성이 높음
      • 한계
        로그인 상황과 같이 클라이언트의 상태를 유지해야 하는 경우 한계가 있음
    • 비연결성(Connectionless)
      : TCP/IP는 기본적으로 연결을 유지하지만 비연결성을 가진 HTTP에서 실제 요청을 주고 받을 때만 연결을 유지하며 응답을 주고 난 뒤에는 TCP/IP 연결을 끊음
      • 이점
        최소한의 자원으로 서버 유지 가능
      • 한계와 극복: HTTP 초기 TCP/IP 연결 시 마다 연결 해체와 연결을 반복했지만 지금음 HTTP 지속 연결로 문제 해결

HTTP Headers의 종류와 특징

HTTP 메시지
: 헤더와 바디로 구분

  • 바디: 메시지 본문(Message body)을 통해 표현(Representation) 데이터 전달하며 메시지 본문을 페이로드(payload)라고도 함
    • 표현: 요청이나 응답에서 전달할 실제 데이터
  • HTTP 헤더: HTTP 전송에 필요한 부가정보를 담기 위해 사용
    • 형식: <field-name>:<field value>

HTTP Headers의 종류

1. 표현 헤더
: 표현 데이터를 해석할 수 있는 정보를 제공하는 헤더

  • 데이터의 형식, 압축 방식, 자연 언어, 길이 등을 설명하는 헤더
  • Content-Type, Content-Encoding, Content-Language, Content-Length
  • 요청, 응답 둘 다 사용

2. HTTP 요청/응답 주요 헤더

  • 요청 시 사용되는 헤더
    • From: 유저 에이전트 이메일의 정보
    • Referer: 이전 웹 페이지 주소
    • User-Agent: 유저 에이전트 애플리케이션 정보
    • Host: 요청한 호스트 정보(도메인)
    • Origin: 서버로 POST 요청을 전송 시 요청 시작 주소
    • Authorization: 인증 토큰을 서버로 보낼 때 사용하는 헤더
  • 응답 시 사용되는 헤더
    • Server: 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보
    • Date: 메시지가 발생한 날짜와 시간
    • Location: 페이지 리디렉션
    • Allow: 허용 가능한 HTTP 메서드
    • Retry-After: 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간

3. 콘텐츠 협상 헤더
: 클라이언트가 선호하는 표현을 요청하는 헤더로 요청 시에만 사용

  • 콘텐츠 협상 헤더가 적용되지 않을 경우 서버는 기본 설정으로 응답
  • 콘텐츠에 대한 우선순위 지정 가능
  • 콘텐츠 협상 헤더 종류
    • Accept: 클라이언트가 선호하는 미디어 타입 전달
    • Accept-Charset: 클라이언트가 선호하는 문자 인코딩
    • Accept-Encoding: 클라이언트가 선호하는 압축 인코딩
    • Accept-Language: 클라이언트가 선호하는 자연 언어

🔆 HTTPS

HTTPS🧐
HTTPS란 HTTP Secure의 약자로 HTTP 통신을 하는 Socket 부분에서 SSL/TLS 프로토콜을 사용하여 서버 인증과 요청과 응답으로 오가는 내용을 암호화하여 HTTP 프로토콜을 더 안전하게 사용 가능함을 의미한다.

  • 암호화 방식
    • 대칭 키 암호화 방식: 암호화와 복호화 시 동일한 키 사용(하나의 키)
      • 연산 속도 빠름
      • 키 관리에 신중해야 함
    • 공개 키 암호화 방식: 암호화와 복호화 시 다른 키를 사용(두 개의 키)
      • 보안성 좋음
      • 연산 속도 비교적 느림
  • SSL/TLS 프로토콜
    : 서버와 클라이언트 간 CA를 통해 서버를 인증하는 과정과 데이터를 암호화하는 과정을 아우르는 프로토콜
    • SSL/TLS 프로토콜의 특징
      • CA를 통한 인증서 사용
        : CA는 서버에게 인증서를 발급해주는 공인된 기관으로 인증서는 서버의 신원을 보증
      • 대칭 키, 공개 키 암호화 방식을 모두 사용
        • 공개 키 암호화 방식
          : 인증서 발급을 위해 서버는 CA로 서버의 정보와 공개 키 전달
          → CA는 서버의 공개 키와 정보를 CA의 비밀키로 암호화하여 인증서 발급
          → 서버는 CA 공개 키로 인증서를 확인하여 복호화를 시도
          → 복호화가 성공적으로 진행된다며 클라이언트는 서버의 정보와 공개키를 획득
          → 해당 서버가 신뢰할 있는 서버라는 정보 획득 가능
        • 대칭 키 암호화 방식
          : 공개 키는 클라이언트와 서버가 함께 사용할 대칭 키를 주고 받을 때 사용
          → 클라이언트는 생성한 대칭 키를 서버의 공개 키로 암호화하여 전달
          → 서버는 전달받은 데이터를 비밀 키로 복호화 하여 대칭 키 확보
          → HTTP 요청 주고 받을 때 대칭 키를 사용하여 데이터를 암호화하여 전달

<오늘의 일기>
배우면 배울수록 잘 모르겠다는 생각이 드는 네트워크의 세계이지만(...ㅎ) 좌절하기보다는 아무것도 몰랐던 내가 조금이나마 알게 되었다는 점을 위안 삼으며 열심히 공부해야겠다.
요즘은 공부를 해가면서 당장 모든 것을 이해하겠다는 생각보다는 여러 번 보다보면 언젠가 이해할 것이라는 믿음을 가지고 꾸준하게 노력해야 지치지 않고 오래갈 수 있겠다는 생각을 하게 되는 것 같다. 좋은 변화라고 장담할 수는 없겠지만 좋은 변화라 믿으며 끝까지 완주해야겠다!

0개의 댓글