-
2022.05.25 이론공부Web/etc. 2022. 5. 25. 08:52
1. Client Server
클라인언트 : 다른 프로그램에게 서비스를 요청하는 프로그램
서버 : 그 요청에 응답하는 프로그램
Q ) 백엔드도 클라이언트가 될 수 있냐?
: 될 수 있다. 클라이언트 - 서버 - 백엔드 - DBMS 관계에서 백엔트와 DBMS 관계에서는 백엔드가 클라이언트다.
추가 )
클라이언트는 서버에게 요청
-> 서버는 클라이언트가 요청한 것을 백엔드(백엔드 언어)에게 전달
-> 백엔드 언어는 로직에 맞춰 DBMS으로 부터 필요한 데이터를 얻는다.
* 서버와 클라이언트는 역할의 개념이며, 서버는 서버의 역할만 할 수 있는게 아니라 하는 일에 따라 클라이언트가 될 수 도 있다.
2. 3way handshake
: TCP를 이용한 데이터 통신을 할 때 프로세스와 프로세스를 연결하기 위해 가장 먼저 수행되는 과정
1. 클라이언트가 서버에게 요청 패킷( SYN )을 보내고
2. 서버가 클라이언트의 요청을 받아들이는 패킷( SYN + ACK )을 보내고
3. 클라이언트는 이를 최종적으로 수락하는 패킷( ACK )을 보낸다.
위의 3개 과정을 3Way Handshake라고 부른다.
- 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기전에 한쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다.
* 패킷 : 컴퓨터 네크워트가 전달하는 데이터의 형식화된 블록
- 제어정보와 사용자 데이터로 이루어지며, 이는 페이로드라고 부른다.
- 데이터가 패킷으로 형식이 바뀔 때, 네트워크는 장문 메시지를 더 효과적으로 신뢰성있게 보낸다.
* SYN - Synchronize / ACK - Acknowledgment
3. tls handshake
: 3way handshake + SSL + RSA 느낌?
TLS 핸드셰이크
1. 클라 → 서버 : 헬로 ( 클라 무작위 )
2. 서버 → 클라 : 헬로응답 ( SSL 인증서 + 서버 무작위 )
3. 클라 : SSL 인증서 검증 → 서버 확인
4. 클라 → 서버 : 예비 마스터 암호 ( 공개키로 암호화 ) ( 클라는 SSL 인증서를 통해 공개키 획득 )
5. 서버 : 예비 마스터 암호해독
6. 클라 and 서버 : 클라 무작위 + 서버 무작위 +예비 마스터 암호 = 세션 키
7. 서버 → 클라 : 세션키로 "완료" 메시지
8. 클라 → 서버 : 세션키로 "완료" 메시지
9. 핸드셰이크 완료, 세션 키로 통신진행참고 자료 : https://www.cloudflare.com/ko-kr/learning/ssl/what-happens-in-a-tls-handshake/
4. 웹동작
웹브라우저 요청 흐름
0. 도메인주소로 DNS 조회 → IP와 PORT를 찾아냄 (목적지)
1. 웹 브라우저가 HTTP 메세지 생성
2. SOCKET 라이브러리를 통해 전달
ㆍ TCP/IP 연결 ( IP, PORT )
ㆍ 데이터 전달
3. TCP/IP 패킷 생성, HTTP 메세지 포함
4. 요청패킷전달 → 도착 시 TCP/IP 패킷을 버리고 HTTP 메세지 해석
5. 서버에서 HTTP 응답메시지 생성 후 응답패킷 전달
6. 웹브라우저 HTML렌더링
'Web > etc.' 카테고리의 다른 글
2022.05.26 이론공부 (0) 2022.05.26