[S3U6] 네트워크 심화

Yeong·2023년 3월 6일
0

CS

목록 보기
9/12

📖TCP/IP

🏷️네트워크의 시작

지금 우리가 사용하는 인터넷 프로토콜, 즉 IP 기반의 네트워크는 미 국방성에서 1969년 진행했던 아르파넷(ARPANET) 프로젝트에서 시작되었다. 이때 기존에 사용되었던 회선교환 방식이 아닌 패킷교환 방식으로 네트워크를 구축하게 되는데 이를 토대로 현재의 인터넷 통신 방식의 기반이 세워졌다.

  • 회선교환 방식
    회선교환 방식은 발신자와 수신자 사이에 데이터를 전송할 전용선을 미리 할당하고 둘을 연결한다. 그래서 전화처럼 연결 상대가 다른 상대와 연결중이라면 그 연결이 끊어지고 나서야 상대방과 연결할 수 있다.
  • 패킷교관 방식
    패킷교환 방식은 패킷이라는 단위로 데이터를 잘게 나누어 전송하는 방식이다. 마치 택배처럼 각 패킷에는 출발지와 목적지 정보가 있어 이에 따라 패킷이 목적지를 향해 이동할 수 있다.
    이를 이용하면 특정 회선이 전용선으로 할당되지 않기 때문에 빠르고 효율적으로 데이터를 전송할 수 있다.

🏷️IP/IP Packet

IP(인터넷 프로토콜) 주소를 컴퓨터에 부여하여 패킷(Packet)이라는 통신 단위로 데이터를 전달한다.
IP 패킷에서 패킷은 pack과 bucket이 합쳐진 단어로 소포처럼 출발지 IP, 목적지 IP와 같은 정보가 포함되어 있다.

패킷 단위로 전송을 하면 서버 컴퓨터들은 목적지 IP로 서로 데이터를 전달한다.
서버에서 무사히 데이터를 전송받는다면 서버도 이에 대한 응답을 돌려준다.

IP Packet의 한계

  • 비연결성
    패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송(데이터 전달 불확실)
  • 비신뢰성
    패킷의 전달 경로가 다를 수 있으므로 도착하는 패킷의 순서를 보장할 수 없음(데이터 순서 불확실)

🏷️TCP/UDP Packet

OSI 7계층과 TCP/IP 4 계층


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

TCP 특징

  • 연결 지향 TCP 3 way handshake(가상연결)
    syn: 너 거기 있니
    syn + ack: 나 여기있어 너는 거기있니
    ack: 어 나도 여기있어
    서로 있는지 없는지 확인한 후 연결성립
  • 데이터 전달 보증
  • 순서 보장
  • 신회할 수 있는 프로토콜

UDP 특징

  • UDP는 IP에 PORT, 체크섬 필드 정보만 추가된 단순한 프로토콜
  • 비연결지향
  • 데이터 전달 보증 X
  • 순서 보장 X
  • TCP 특징과 비교해 보면 신뢰성은 낮지만 3 way handshake 방식을 사용하지 않기 때문에 TCP와 비교해 빠른 속도를 보장
  • 신뢰성보다는 연속성이 중요한 서비스(ex. 실시간 스트리밍)에 자주 사용됨

📖네트워크 계층 모델

  • 데이터 전송: 상위 계층에서 하위 계층으로 데이터를 전달
    이때 데이터를 상대방에게 보낼 때 각 계층에서 필요한 정보를 데이터에 추가하는데 이 정보를 헤더(데이터링크 계층에서는 트레일러)라고 한다. 그리고 이렇게 헤더를 붙여나가는 것을 캡슐화라고 한다.
    마지막 물리 계층에 도달하며 송신 측의 데이터링크 계층에서 만들어진 데이터가 전기 신호로 변환되어 수신 측에 전송된다.

  • 데이터 수신: 하위 계층에서 상위 계층으로 데이터를 받음
    이때 상위 계층으로 데이터를 전달하며 각 계층에서 헤더(데이터링크 계층에서는 트레일러)를 제거해 나가는 것을 역캡슐화라고 한다. 역캡슐화를 거쳐 마지막 응용 계층에 도달하면 전달하고자 했던 원본 데이터만 남게 된다.

📖HTTP

🏷️HTTP 역사

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

🏷️HTTP의 특징

  • 클라이언트 서버 구조
    클라이언트가 서버에 요청을 보내면 서버는 그에 대한 응답을 보내는 클라이언트 서버 구조이다.

  • 무상태성
    서버가 클라이언트의 상태를 보존하지 않고 클라이언트가 상태를 가지고있는 무상태 프로토콜이다.
    장점: 서버 확장성 높다(서버 증설 쉬움)
    단점: 클라이언트가 추가 데이터 전송해야함

  • 비연결성
    HTTP 1.0 기준으로, HTTP는 연결을 유지하지 않는 모델이다. 실제로 요청 주고받을 때만 연결 유지하므로 최소한의 자원으로 서버 유지가 가능하다. 하지만 매번 자원을 보낼 때마다 연결 끊고 다시 연결하고를 반복하는 것은 비효율적이기 때문에 지금은 HTTP 지속 연결(Persistent Connections)로 문제를 해결한다.


    HTTP 1.0: 요청시 마다 연결 종료 반복
    HTTP 1.1(지속 연결): 순차적으로 모든 요청과 응답이 끝나고 난 후 연결 종료
    HTTP 1.1(파이프라인): 모든 요청을 한번에 보내면 순차적으로 응답 받음
    HTTP 1.0(멀티플렉싱): 요청과 응답 모두 한번에 보내고 받음

  • HTTP 메세지

  • 단순함, 확장 가능

🏷️ HTTP Headers의 종류와 특징

표현 헤더(Representation Headers)

  • 표현 데이터의 형식, 압축 방식, 자연 언어, 길이 등을 설명하는 헤더이다.
  • 표현 헤더는 요청, 응답 둘 다 사용

콘텐츠 현상 헤더(Content negotiation)

  • 클라이언트가 선호하는 표현 요청(우선순위도 표현 가능)

  • 협상 헤더는 요청 시에만 사용

📖HTTPS

  • HTTPS는 HTTP Secure의 약자로, 단어 뜻 그대로 기존의 HTTP 프로토콜을 더 안전하게(Secure) 사용할 수 있음을 의미한다. HTTPS가 HTTP와 달리 요청과 응답으로 오가는 내용을 암호화하기 때문이다.

🏷️ 암호화 방식

  • 대칭 키 암호화 방식
    암호화할 때 사용하는 키와 동일한 키로 복호화 가능
    연산 속도가 빠르나 키 관리를 시경써야한다.
  • 공개키(비대칭 키) 암호화 방식
    암호화할 때 사용한 키와 다른 키로만 복호화 가능
    공개키로 암호화 시키고 비밀 키만로 복호화할 수 있다
    보안성이 대칭 키보다 좋으나 많은 시간을 소모한다.

🏷️인증서와 CA(Certificate Authority)


1. 서버는 인증서를 발급받기 위해서 CA로 서버의 정보와 공개 키를 전달한다.
2. CA는 서버의 공개 키와 정보를 CA의 비밀 키로 암호화하여 인증서를 발급해 준다.
3. 서버는 클라이언트에게 요청을 받으면 CA에게 발급받은 인증서를 보내준다.
4. 사용자가 사용하는 브라우저는 CA들의 리스트와 공개 키를 내장하고 있으므로 해당 인증서가 리스트에 있는 CA가 발급한 인증서인지 확인하고, 리스트에 있는 CA라면 해당하는 CA의 공개 키를 사용해서 인증서의 복호화를 시도한다.
CA의 비밀 키로 암호화된 데이터(인증서)는 CA의 공개 키로만 복호화가 가능하므로, 정말로 CA에서 발급한 인증서가 맞다면 복호화가 성공적으로 진행되고 실패했다면 신뢰할 수 없는 인증서임을 확인하게 된다.
5. 서버의 인증서를 성공적으로 복호화하여 서버의 공개 키를 확보한 후 클라이언트와 서버가 함께 사용할 대칭키를 서버의 공개 키로 암호화하여 서버에게 보내준다.
클라이언트가 서버로 대칭 키를 보낼 때 서버의 공개 키를 사용해서 암호화하여 보내준다면, 서버의 비밀 키를 가지고 있는게 아닌 이상 해당 대칭 키를 복호화할 수 없으므로 탈취될 위험성이 줄어든다.
대칭키를 사용하는 이유는 공개 키 암호화 방식은 보안은 확실하지만, 복잡한 연산이 필요하여 더 많은 시간을 소모하기때문이다.

profile
긍정적으로~✍️(◔◡◔)

0개의 댓글