ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CS study] 2022.05.30
    CS 2022. 5. 31. 00:18

    TCP 4 way handshake

     

    TCP의 연결만 알고 연결 해제는 알지 못했다.

    3 way handshake 방식으로 연결을 하고 모든 통신이 끝난 후

    1.  클라이언트는 서버에 연결을 종료한다는 FIN 플래그를 보냄
    2. 서버는 FIN을 받고 받았다는 ACK를 보냄 이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 됨
    3. 서버는 데이터를 모두 보냈다면 연결이 종료되었다는 FIN 플래그를 클라이언트에게 보냄
    4.  클라이언트는 FIN 플래그를 받고 받았다는 ACK를 서버에게 보냄 아직 받지 못한 데이터가 있을 수도 있으므로 TIME_WAIT를 통해 기다림

    서버는 ACK를 받은 후 소켓을 닫음, TIME_WAIT 시간이 끝나면 클라이언트도 닫음

    4번의 통신이 완료되면 연결이 해제된다.

     

    TLS/SSL handshake

    HTTPS 통신에서 클라이언트와 서버 간 통신 전에 SSL 인증서로 신뢰성 여부를 판단하기 위해 연결하는 방식

    TLS/SSL handshake

    1. 클라이언트가 암호화된 정보 (버전, 암호 알고리즘, 압축방식)에 "client hello"메시지를 담아 보냄
    2. 서버는 받아서 세션 ID와 CA 공개 인증서를 "server hello" 메시지와 함께 담아 응답함 CA 인증서는 공개키를 담고 있음
    3. 클라이언트는 CA 인증서가 유효한지 CA 목록에서 확인함
    4. CA 인증서에 신뢰성이 확보되면 클라이언트는 난수 바이트를 생성하여 서버의 공개키로 암호화 난수 바이트는 대칭키를 정하는 데 사용이 되고 앞으로 서로 메시지를 통신할 때 암호화하는 데 사용됨
    5. 2번 단계에서 서버가 클라이언트 인증서를 함께 요구했다면 클라이언트의 인증서와 클라이언트의 개인키로 암호화된 임의의 바이트 문자열을 함께 보내준다
    6. 서버는 클라이언트의 인증서를 확인한 후 난수 바이트를 자신의 개인키로 복호화한 후 대칭 마스터 키 생성에 활용함 
    7. 클라이언트는 handshake 과정이 완료되었다는 finished 메시지를 보내면서 지금까지 보낸 교환 내역들을 해싱 후 그 값을 대칭키로 암호화해서 담아 보냄
    8. 서버도 동일하게 교환 내용들을 해싱한 후 클라이언트에서 보내준 값과 일치하는지 확인 후 일치하면 마찬가지로 finished 메시지를 이번에 만든 대칭키로 암호화하여 보냄
    9.  클라이언트는 해당 메시지를 대칭키로 복호화하여 서로 통신이 가능한 신뢰받은 사용자인걸 확인하고 앞으로 클라이언트와 서버는 해당 대칭키로 데이터를 주고받음

    로드 밸런싱(Load Balancing)

    Load Balancing

    둘 이상의 CPU or 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것

    • 시간이 흐르며 웹사이트에 접속하는 인원이 급격히 늘어나게 되었다.
    • 모든 트래픽을 감당하기에는 1대의 서버로는 부족해짐
    • 대응 방안으로 하드웨어의 성능 자체를 향상하거나(Scale-up) 여러 대의 서버가 나눠서 일하도록 만드는 것(Scale-out)이 있음
    • 하드웨어 향상의 비용이 비싸고 성능의 한계가 있음 또한 서버가 여러 대면 무중단 서비스를 제공하기 용이함
    • 이때 서버에게 균등하게 트래픽을 분산시켜주는 것이 로드 밸런싱이다
    • 로드 밸런싱은 분산식 웹 서비스로 여러 대에 부하를 나누어주는 역할을 함
    • 사이트의 규모가 커질 때 웹 서버를 추가로 증설하면서 로드 밸런서로 관리해주면 웹 서버의 부하를 해결할 수 있다
    • 결국은 늘어난 트래픽에 대응하여 부하를 분담하기 위함

     

    로드 밸런서가 서버를 선택하는 방식

    • 라운드 로빈(Round Robin): CPU 스케줄링의 라운드 로빈 방식 활용
    • Least Connections: 연결 개수가 가장 적은 서버를 선택 (트래픽으로 인해 세션이 길어지는 경우 권장됨)
    • Source: 사용자 IP를 해싱하여 분배 (특정 사용자가 항상 같은 서버로 연결되는 것을 보장)

     

    로드 밸런서 장애 대비

    • 서버를 분배하는 로드 밸런서에 문제가 생길 수 있기 때문에 로드 밸런서를 이중화하여 대비

     

    'CS' 카테고리의 다른 글

    [CS study] 2022.06.08  (0) 2022.06.08
    [CS study] 2022.06.01  (0) 2022.06.01
    [CS study] 2022.05.22  (0) 2022.05.22
    [CS study] 2022.05.11  (0) 2022.05.12
    [CS study] 2022.05.10  (0) 2022.05.10

    댓글

Designed by Tistory.