차이점

 

  HTTP HTTPS
개념 웹 상에서 클라이언트와 서버 간에 요청, 응답으로 정보를 주고 받는 프로토콜 HTTP의 보안이 강화된 버전
프로토콜 TCP, UDP TCP / IP
포트 80번 포트 443번 포트
특징

비연결(Connectionless)

클라이언트가 요청을 서버에 보내고 서버가 적절한 응답을 클라이언트에 보내면 바로 연결이 끊긴다.

무상태(Stateless)

연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태 정보를 유지하지 않는다.

소켓 통신에서 일반 텍스트를 이용하는 대신에, 웹 상에서 정보를 암호화하는 SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화한다.

TLS(Transport Layer Security) 프로토콜은 SSL(Secure Socket Layer) 프로토콜에서 발전한 것

데이터의 적절한 보호를 보장한다

 

 

 

HTTPS의 보안 원리

 

  • 공개키(비대칭키) 알고리즘
  • 개인키는 서버가 갖고있음
  • 과정
    1. 사용자의 데이터를 공개키로 암호화 (공개키를 얻은 인증된 사용자)
    2. 서버로 전송 (데이터를 가로채도 개인키가 없으므로 복호화할 수 없음)
    3. 서버의 개인키를 통해 복호화하여 요청 처리

 

 

HTTPS의 장단점

 

  • 장점
    • 네트워크 상에서 열람, 수정이 불가능하므로 안전하다.
  • 단점
    • 암호화를 하는 과정이 웹 서버에 부하를 준다.
    • HTTPS는 설치 및 인증서를 유지하는데 추가 비용이 발생한다.
    • HTTP에 비해 느리다.
    • 인터넷 연결이 끊긴 경우 재인증 시간이 소요된다.
      • HTTP는 비연결형으로 웹 페이지를 보는 중 인터넷 연결이 끊겼다가 다시 연결되어도 페이지를 계속 볼 수 있다.
      • 그러나 HTTPS의 경우에는 소켓(데이터를 주고 받는 경로) 자체에서 인증을 하기 때문에 인터넷 연결이 끊기면 소켓도 끊어져서 다시 HTTPS 인증이 필요하다.

 

 

반응형

 

 

차이점

 

  TCP UDP
메시지 형태 세그먼트 단위 데이터그램(패킷) 단위
서비스 형태 연결형 서비스
연결 : 3-way handshaking
해제 : 4-way handshaking
비연결형 서비스
제어 흐름제어 / 혼잡제어 X
신뢰도 높은 신뢰성 낮은 신뢰성
속도 보다 느린 속도 보다 빠른 속도
  전송 양방향 가능 신뢰성보다는 연속성이 중요한 서비스에 사용됨
ex. 스트리밍 서비스
  Point to Point  
  IP와 함께 사용됨
IP : 배달 처리
TCP : 패킷 추적 및 관리
 

 

 

TCP의 헤더

 

 

 

필드 내용 크기(bits)
Source Port, Destination Port TCP로 연결되는 가상 회선 양단의 송수신 프로세스에 할당되는 포트 주소 16
Sequence Number 송신자가 지정하는 순서 번호, 전송되는 바이트 수 기준으로 증가
SYN = 1 : 초기 시퀀스 번호. ACK 번호는 이 값에 + 1
32
Acknowledgment(ACK) Number 수신 프로세스가 제대로 수신한 바이트의 수 응답 용 32
Header Length(Data Offset) TCP 헤더 길이를 4바이트 단위로 표시(최소 20, 최대 60 바이트) 4
Resv(Reserved) 나중을 위해 0으로 채워진 예약 필드 6
Flag Bit SYN, ACK, FIN 등 제어 번호 6
Window Size 수신 윈도우의 버퍼 크기 지정(0이면 송신 중지)
상대방의 확인 없이 전송 가능한 최대 바이트 수
16
TCP Checksum 헤더와 데이터의 에러 확인 용도 16
Urgent Pointer(긴급 위치) 현재 순서 번호부터 표시된 바이트까지 긴급한 데이터임을 표시, URG 플래그 비트가 지정된 경우에만 유효 16
Options 추가 옵션 있을 경우 표시 0~

 

 

 

참고사항

  • UDP와 TCP는 각각 별도의 포트 주소 공간을 관리하므로 같은 포트 번호를 사용해도 무방하다. 즉, 두 프로토콜에서 동일한 포트 번호를 할당해도 서로 다른 포트로 간주한다.
  • 또한 같은 모듈(UDP or TCP) 내에서도 클라이언트 프로그램에서 동시에 여러 커넥션을 확립한 경우에는 서로 다른 포트 번호를 동적으로 할당한다. (동적 할당에 사용되는 포트번호는 49,152~65,535이다.)

 

 

TCP 관련 질문

 

질문 1

  • Q. TCP의 연결 설정 과정(3단계)과 연결 종료 과정(4단계)이 단계가 차이나는 이유?
    • A. Client가 데이터 전송을 마쳤다고 하더라도 Server는 아직 보낼 데이터가 남아있을 수 있기 때문에 일단 FIN에 대한 ACK만 보내고, 데이터를 모두 전송한 후에 자신도 FIN 메시지를 보내기 때문이다.

 

질문 2

  • Q. 만약 Server에서 FIN 플래그를 전송하기 전에 전송한 패킷이 Routing 지연이나 패킷 유실로 인한 재전송 등으로 인해 FIN 패킷보다 늦게 도착하는 상황이 발생하면 어떻게 될까?
    • A. 이러한 현상에 대비하여 Client는 Server로부터 FIN 플래그를 수신하더라도 일정 시간(Default: 240 sec) 동안 세션을 남겨 놓고 잉여 패킷을 기다리는 과정을 거친다. (TIME_WAIT 과정)

 

질문 3

  • Q. 초기 Sequence Number인 ISN을 0부터 시작하지 않고 난수를 생성해서 설정하는 이유?
    • A. Connection을 맺을 때 사용하는 포트(Port)는 유한 범위 내에서 사용하고 시간이 지남에 따라 재사용된다. 따라서 두 통신 호스트가 과거에 사용된 포트 번호 쌍을 사용하는 가능성이 존재한다. 서버 측에서는 패킷의 SYN을 보고 패킷을 구분하게 되는데 난수가 아닌 순차적인 Number가 전송된다면 이전의 Connection으로부터 오는 패킷으로 인식할 수 있다. 이런 문제가 발생할 가능성을 줄이기 위해서 난수로 ISN을 설정한다.
반응형

 

OSI 7계층

 

OSI(Open Systems Interconnection Reference Model)란

  • 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다.

  • 이 모델은 프로토콜을 기능별로 나눈 것이다.

  • 각 계층은 하위 계층의 기능만을 이용하고, 상위 계층에게 기능을 제공한다.

  • '프로토콜 스택' 혹은 '스택'은 이러한 계층들로 구성되는 프로토콜 시스템이 구현된 시스템을 가리키는데, 프로토콜 스택은 하드웨어나 소프트웨어 혹은 둘의 혼합으로 구현될 수 있다.

  • 일반적으로 하위 계층들은 하드웨어로, 상위 계층들은 소프트웨어로 구현된다.

 

물리 계층(Physical layer)

  • 네트워크의 기본 네트워크 하드웨어 전송 기술을 이룬다.

  • 네트워크의 높은 수준의 기능의 논리 데이터 구조를 기초로 하는 필수 계층이다.

  • 데이터 링크 계층의 프레임을 받고 다음 장치에 구리나 광섬유(케이블) 또는 무선 매체를 통신해 전송하기 위한 신호로 바꾸어 준다.

  • 전송 단위는 Bit이다.

 

데이터 링크 계층(Data link layer)

  • 네트워크 계층의 패킷 데이터를 물리적 매체에 실어 보내기 위한 계층

  • 포인트 투 포인트(Point to Point) 간 신뢰성있는 전송을 보장하기 위한 계층으로 CRC 기반의 오류 제어와 흐름 제어가 필요하다.

  • 주소 값은 물리적으로 할당 받는데, 이는 네트워크 카드가 만들어질 때부터 맥 주소(MAC address)가 정해져 있다는 뜻이다.

  • 데이터 링크 계층의 가장 잘 알려진 예는 이더넷이다.

  • 데이터 전송 단위는 Frame이다.

 

네트워크 계층(Network layer)

  • 여러개의 노드를 거칠때마다 경로를 찾아주는 역할을 하는 계층으로 다양한 길이의 데이터를 네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질(QoS)을 제공하기 위한 기능적, 절차적 수단을 제공한다.

  • 네트워크 계층은 라우팅, 흐름 제어, 세그멘테이션(segmentation/desegmentation), 오류 제어, 인터네트워킹(Internetworking) 등을 수행한다.

  • 논리적인 주소 구조(IP), 곧 네트워크 관리자가 직접 주소를 할당하는 구조를 가지며, 계층적(hierarchical)이다.

  • 데이터 전송 단위는 Datagram(Packet)이다.

 

전송 계층(Transport layer)

  • 양 끝단(End to end)의 사용자들이 신뢰성있는 데이터를 주고 받을 수 있도록 해 주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해준다.

  • 시퀀스 넘버 기반의 오류 제어 방식을 사용한다.

  • 전체 메시지 종단 대 종단간 제어 및 에러 관리

  • 전송 계층은 특정 연결의 유효성을 제어하고, 일부 프로토콜은 상태 개념이 있고(stateful), 연결 기반(connection oriented)이다. (이는 전송 계층이 패킷들의 전송이 유효한지 확인하고 전송 실패한 패킷들을 다시 전송한다는 것을 뜻한다.)

  • 가장 잘 알려진 전송 계층의 예는 TCP이다.

  • 데이터 전송 단위는 Segment / Datagram이다.

 

세션 계층(Session layer)

  • 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다.

  • 동시 송수신 방식(duplex), 반이중 방식(half-duplex), 전이중 방식(Full Duplex)의 통신과 함께, 체크 포인팅과 유휴, 종료, 다시 시작 과정 등을 수행한다.

  • 통신 세션을 구성하며 포트 번호를 기반으로 연결한다.

  • 이 계층은 TCP/IP 세션을 만들고 없애는 책임을 진다.

 

표현 계층(Presentation layer)

  • 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어 준다.

  • MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어진다.

 

응용 계층(Application layer)

  • 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다.

  • 일반적인 응용 서비스는 관련된 응용 프로세스들 사이의 전환을 제공한다

 

 

데이터 전송 단위, 프로토콜, 관련 기기

 

 

반응형

+ Recent posts