HTTP(HyperText Transfer Protocol)

  • 인터넷 상에서 클라이언트와 서버가 자원을 주고받을 때 쓰는 통신 규약(80 포트 사용)
  • 서버에서부터 브라우저로 전송되는 정보가 암호화 되지 않아 보안 이슈가 존재합니다.

 

HTTPS(HyperText Transfer Protocol Secure)

  • HTTP에 데이터 암호화 SSL이 추가된 통신규약(443 포트 사용)
  • 인터넷 상에서 정보를 암호화하는 SSL 프로토콜을 사용해 클라이언트와 서버가 자원을 주고받을 때 쓰는 통신 규약으로 텍스트를 암호화합니다. (공개키 암호화 방식으로)

 

+ 공개키(Public Key) 암호화

  • 자신이 가지고 있는 비밀키로만 복호화할 수 있는 공개키를 대중에게 공개함
  • 공개키와 개인키는 서로를 위한 1쌍의 키이다
  • 공개키 : 모두에게 공개 가능한 키
  • 개인키 : 나만 가지고 알고 있어야 하는 키
  • 전달할 메시지를 공개키로 암호화하여 이를 전송하면 개인키로 이를 복호화하여 메시지를 확인할 수 있다.

 

+ HTTPS 통신 흐름

  1. 애플리케이션 서버(A)를 만드는 기업은 HTTPS를 적용하기 위해 공개키와 개인키를 만든다.
  2. 신뢰할 수 있는 CA 기업을 선택하고, 그 기업에게 내 공개키 관리를 부탁하며 계약을 한다.
    • CA란? : Certificate Authority로, 공개키를 저장해주는 신뢰성이 검증된 민간기업
  3.  계약 완료된 CA 기업은 해당 기업의 이름, A서버 공개키, 공개키 암호화 방법을 담은 인증서를 만들고, 해당 인증서를 CA 기업의 개인키로 암호화해서 A서버에게 제공한다.
  4. A서버는 암호화된 인증서를 갖게 되었다. 이제 A서버는 A서버의 공개키로 암호화된 HTTPS 요청이 아닌 요청이 오면, 이 암호화된 인증서를 클라이언트에게 건네준다.
  5. 클라이언트는 main.html 파일을 달라고 A서버에 요청했다고 가정하자. HTTPS 요청이 아니기 때문에 CA기업이 A서버의 정보를 CA 기업의 개인키로 암호화한 인증서를 받게 된다.
    • CA 기업의 공개키는 브라우저가 이미 알고 있다. (세계적으로 신뢰할 수 있는 기업으로 등록되어 있기 때문에, 브라우저가 인증서를 탐색하여 해독이 가능한 것)
  6. 브라우저는 해독한 뒤 A서버의 공개키를 얻게 되었다. 이제 A서버와 통신할 대는 얻은 A서버의 공개키로 암호화해서 요청을 날리게 된다.

 

-> HTTPS 적용해보기

  1. AWS EC2에서 public dns 발급
  2. freenom이라는 무료 도메인 발급 사이트에서 도메인 발급
  3. AWS Route 53에서 EC2에서 발급받은 public dns와 발급받은 도메인 연결 (SSL 인증서를 발급받기 위해서는 도메인 이름을 소유하고 있어야 되기 때문에)
  4. Let's Encrypt라는 무료 SSL 인증서 발급 기관에서 인증서를 발급받아 서버에 적용
반응형

'cs지식 > Network' 카테고리의 다른 글

[Network] OSI 7계층 정리, 각 계층별 설명  (0) 2021.05.21

OSI(Open Systems Interconnection) 7 계층

  • 통신이 일어나는 과정을 7단계로 정의한 국제 통신 표준 규약이다.
  • 계급, 상하구조가 존재한다.  ex) 물리적 회선 연결이 있어야 데이터를 보내고 소프트웨어가 동작한다.
  • 각 계층은 독립되어있다. -> 용이성, 유지관리의 수월성
  • 암기 TIP : 모든 사람은 데이터 처리가 필요한 듯하다(All-People-Seem-To-Need-Data-Processing)
  1. 물리(Physical Layer) : 데이터를 전기적인 신호로 변환해서 주고받는 기능을 진행하는 공간. 장비로는 통신 케이블, 허브가 존재한다.
  2. 데이터 링크(Data Link Layer) : 물리계층으로 송/수신되는 정보 확인하고 오류 없는 통신을 위해 여러 역할을 수행한다. MAC 주소를 통해 통신함. 장비로는 브릿지와 스위치가 존재한다.
  3. 네트워크(Network) : 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능. 라우터를 통해 경로를 선택하여 IP주소를 지정하고 경로에 따라 패킷을 전달해준다. 장비로는 라우터가 존재한다.
  4. 전송(Transport) : 두 호스트 시스템으로부터 발생하는 데이터의 흐름을 제공한다. 
  5. 세션(Session) : 통신 시스템 사용자 간의 연결을 유지 및 설정한다.
  6. 표현(Presentation) : 세션 계층 간의 주고받는 인터페이스를 일관성 있게 제공한다.
  7. 응용(Application) : 사용자가 네트워크에 접근할 수 있도록 서비스를 제공한다.

ex) 미국에 있는 친구에게 편지를 보낸다

  • 응용(Layer 7) : 편지를 쓴다
  • 표현(Layer 6) : 한글로 작성한 편지를 미국 친구가 알아볼 수 있게 번역한다.
  • 세션(Layer 5) : 미국 친구의 집 주소를 기입한다.
  • 전송(Layer 4) : 우체국에 편지를 접수시키기 위한 절차, 즉 배 또는 비행기 등의 운송수단 결정
  • 네트워크(Layer 3) : 우체국에 있는 여러 편지들을 같은 목적지별로 분류한다.
  • 데이터링크(Layer 2) : 해당되는 목적지와 운송 방법에 따라 분류하며, 해당되는 목적지와 직접 연결이 되지 않는 경우 중간 경유지를 선택하여 분류하는 작업이다.
  • 물리계층(Layer 1) : 실제적으로 편지가 배, 비행기, 자동차 등의 운송수단에 의해서 운송되는 것을 의미한다.

 

ex) 이메일 전송을 한다 ( 참고자료 )

  • 응용(Layer 7) : 이메일 프로그램을 통해 이메일을 작성한다.
  • 표현(Layer 6) : 공통된 표현 형식으로 데이터를 변환하거나, 암호화, 압축을 수행한다.
  • 세션(Layer 5) : 데이터의 동기화를 위해 일정한 길이마다 sync를 삽입하여 전송 계층으로 데이터를 전달한다.
  • 전송(Layer 4) : 발신지와 목적지의 주소를 지정하고, 연결 방식, 흐름제어, 오류제어를 한다. 그리고, 데이터를 전송할 수 있는 세그먼트 단위로 나눈다.
  • 네트워크(Layer 3) : 발신지와 목적지의 주소가 아닌 라우팅에 필요한 논리 주소를 설정하고, 패킷에 대한 라우팅 정보를 삽입한다.
  • 데이터링크(Layer 2) : 프레인 단위로 데이터를 나눈다. 그리고 MAC 주소를 지정하고, 각 양 끝단의 속도차이에 대해 원활하게 해주기 위한 흐름제어를 한다. 또한 데이터의 오류를 막기 위해 CRC방법이나 체크썸 방식을 사용해 데이터를 받는 쪽에서 데이터의 오류를 검사할 수 있도록 설정한다.
  • 물리계층(Layer 1) : 전송 매체가 일반 케이블인지, 광 케이블인지 등의 설정을 한다. 그리고 전송 방식과 데이터를 회선으로 보내기 위한 전기적인 변환을 담당한다.

 


1. 물리계층(Physical Layer)

ex) 해리포터는 부엉이, 편지는 우편부, 통신에도 매체가 필요하다 -> 유선은 UTP, STP 케이블이나 광케이블, 무선은 공기

  • 데이터를 전기적인 신호로 변환해서 주고받는 기능을 진행하는 공간
  • 장비 : 통신 케이블, 리피터, 허브, 모뎀 등
  • 데이터 단위 : 데이터는 0과 1의 비트열, 즉 On, Off 전기적 신호 상태로 이루어진다.
  • 데이터를 전달하기만 한다. 어떤 에러가 있는지 등에는 전혀 관여하지 않는다.
  • 이진 데이터를 어떤 시그마로 만드느냐 -> 인코딩 기술
  • 신호를 주고받기 위한 전기적, 기계적, 기능적인 특성을 이용해 데이터를 전송
  • 대역폭과 전송효율이 중요

 

2. 데이터 링크 계층(Data Link Layer) 

  • 물리계층으로 송/수신되는 정보를 확인하고 오류 없는 통신을 위해 여러 역할을 수행한다.
  • MAC 주소를 통해 통신한다. 프레임에 Mac 주소를 부여하고 에러 검출, 재전송, 흐름 제어를 진행한다.
  • 장비 : 브릿지, 스위치
  • 데이터 단위 : 프레임(Frame)
  • 하드웨어와 소프트웨어 특성을 둘 다 가진다 (물리계층은 하드웨어적 특성을 가지고, 네트워크 계층부터는 소프트웨어적인 특성을 가진다. 연결다리 역할)

( + 심화 )

ex) 한국에서 미국IP로 전달해줘 -> 각 노드를 타고 메세지가 전달된다

  • 데이터 링크 계층은 직접 연결된 서로 다른 2개의 네트워킹 장치 간의 데이터 전송을 담당하는 계층
  • 이 계층에서 전송되는 데이터를 프레임(Frame)이라고 한다.
  • 이 계층에서 사용되는 다양한 프로토콜은 용도에 따라 프레임의 종류, 길이 등의 정보를 정의한다.
  • MAC(Media Access Control)이라고 하는 매체 접근 제어 기능
  • 48비트 길이의 주소를 가짐
  • 주요 역할 -> 오류 없는 통신을 위한 역할
    • 프레이밍(Framing) : 물리 계층을 통해 수신한 신호를 조합하여 프레임 단위의 정해진 크기의 데이터 유닛으로 만들어 처리
    • 흐름 제어(Flow Control) : 송신 측과 수신 측 간에 데이터를 주고받을 때, 너무 많거나 너무 적게 데이터를 송수신하지 않도록 데이터 흐름을 적절히 제어)
    • 오류 제어(Error Control) : 프레임 전송 시에 발생한 오류를 복원하거나 재전송
    • 접근 제어(Access Control) : 매체 상에 통신 주체가 여럿 존재할 때, 데이터 전송 여부를 결정
    • 동기화(Synchronization) : 프레임 구분자

 

(+ MAC 주소란 )

  • 컴퓨터 간 데이터를 전송하기 위해 있는 컴퓨터의 물리적 주소, 하드웨어 주소
  • 그 기계의 고유번호, 그 하드웨어만 가지고 있는 식별변호 (= 주민번호)
  • IP는 변할 수 있지만 MAC은 변하지 않는다
  • MAC 주소는 데이터링크 계층에 사용되고, IP주소는 네트워크 계층에서 사용된다

ex) '서울특별시 ~~~(IP)'에 사는 '00(MAC 주소)'에게 편지를 보내줘 // 00이 변하지 않은 이름이라 가정

 

3. 네트워크 계층 (Network Layer)

  • 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅)을 담당한다.
  • 라우터를 통해 이동할 경로를 선택하여 IP주소를 지정하고, 해당 경로에 따라 패킷을 전달해준다. (= 패킷을 네트워크 간의 IP를 통하여 데이터를 전달한다)
  • 라우팅, 흐름제어, 오류제어, 세그먼테이션 등을 수행한다.
  • 장비 : 라우터
  • 데이터 단위 : 패킷(Packet)

 

4. 전송 계층(Transport Layer)

  • 두 호스트 시스템으로부터 발생하는 데이터의 흐름을 제공한다. 
  • TCP와 UDP 프로토콜을 통해 통신을 활성화한다. Port를 열어두고, 프로그램들이 전송할 수 있도록 제공해준다.
  • 데이터 단위 : 세그먼트(Segment)

+ TCP : 신뢰성, 연결지향적 / UCP : 비신뢰선, 비연결성, 실시간

5. 세션 계층(Session Layer)

  • 통신 시스템 사용자 간의 연결을 유지 및 설정한다.
  • 데이터가 통신하기 위한 논리적 연결을 담당한다. 세션을 만들고 없애는 책임을 지니고 있다.
  • API, Socket

 

6. 표현 계층(Presentation Layer)

  • 세션 계층 간의 주고받는 인터페이스를 일관성 있게 제공한다.
  • 데이터 표현에 대한 독립성을 제공하고, 암호화하는 역할을 담당한다.
  • 파일 인코딩, 명령어를 포장, 압축, 암호화 한다.
  • JPEG, MPEG 등

 

7. 응용 계층(Application Layer)

  • 사용자가 네트워크에 접근할 수 있도록 서비스를 제공한다.
  • 최종 목적지로, 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다.
  • 사용자 인터페이스, 전자우편, 데이터베이스 관리 등의 서비스를 제공한다.
  • HTTP(HyperText Transfer Protocol), SMTP(Simple Mail Transfer Protocol), FTP(File Transfer Protocol), DNS 등

 

반응형

'cs지식 > Network' 카테고리의 다른 글

[Network] HTTP / HTTPS 비교  (0) 2021.05.21

+ Recent posts