웹 서버 통신을 위한 프로토콜, 80번 포트 사용
암호화된 통신을 제공하는 http이므로 느리지만 개인정보 등의 보안 유지를 위해서 사용한다.
TCP가 가상회선을 만들고 제거하는 과정
TCP 3 way handshake는 가상회선을 수립하는 단계이다. 클라이언트는 서버에 요청을 전송할 수 있는지, 서버는 클라이언트에게 응답을 전송할 수 있는지 확인하는 과정이다.
SYN, ACK 패킷을 주고받으며, 임의의 난수로 SYN 플래그를 전송하고, ACK 플래그에는 1을 더한값을 전송한다.
정확한 순서는 SYN(n) → ACK(n + 1), SYN(m) → ACK(m + 1)
클라이언트가 서버에게 SYN
서버는 SYN/ACK를 반환하여 연결 수락
클라이언트가 ACK를 보내어 연결 확립
이후 데이터 전송이 이루어질때에도 ACK를 통해 안전한 전송을 보낸다.
TCP 연결을 설정하기 위한 초기 단계로, 클라이언트가 서버에게 TCP 연결을 요청하는 데 사용
클라이언트가 SYN 패킷을 보내면, 이것은 클라이언트가 연결을 설정하고자 한다는 신호이다.
SYN 패킷은 TCP 연결 설정 시에 가장 처음 보내는 패킷이다.
ACK는 패킷의 수신 확인을 나타내는데, 이를 통해 송신자가 데이터를 안전하게 보내는 것을 확인한다.
서버가 클라이언트의 SYN 요청을 수신한 후에 보내는 패킷으로, 서버는 클라이언트의 요청을 수락하고 연결을 설정한다.
ACK는 데이터를 전송하는 과정에서도 사용되며, 수신 측에서 데이터 패킷을 정상적으로 수신했다는 것을 송신 측에 알려준다.
TCP 연결을 해제하는 단계로, 클라이언트는 서버에게 연결해제를 통지하고 서버가 이를 확인하고 클라이언트에게 이를 받았음을 전송하고 최종적으로 연결이 해제된다.
단, 서버에서 소켓이 닫혔다고 통지해도 클라이언트 측에서는 일정시간 대기하는데, 혹시나 패킷이 나중에 도착할 수 있기 때문이다.
클라이언트는 TCP 3 way handshake를 수행한 후 Client Hello를 전송한다. 서버는 인증서를 보낸다.
클라이언트는 받은 인증서를 신뢰하기 위해서 등록된 인증기관인지 확인한다. 이 인증서는 인증기관의 개인키로 암호화되어있고, 공개키로 검증할 수 있다.(브라우저에 내장) 클라이언트는 사이트의 정보와, 서버의 공개키를 얻을 수 있다.
서버의 공개키로 통신에 사용할 비밀키를 암호화해서 서버에 보낸다. 서버는 이를 개인키로 확인하고 이후 통신은 공유된 비밀키로 암호화되어 통신한다.
www.google.com/search
서버 상의 파일들의 위치
www.google.com/search?q=ui
인터넷 사의 자원을 식별하기 위한 문자 구현
오늘 학습한 내용은 기존에 여러 번 실습하며 익혔던 메소드들과 달리 암기 성향이 강한 개념들이라 기억에 오래 남을지 걱정이 되었다.
특히 Handshake 개념이 추상적으로 느껴져 이미지 자료들을 참고하며 이해하려 노력했다.
앞으로도 이런 개념은 시각적 자료와 함께 반복 학습이 필요할 것 같다.