우리가 구글에 접속할 때 어떤 과정이 일어나는 걸까?
있다면 해당 ip주소를 이용.
DNS서버는 계층적인 구조를 갖고 있기에 루트 DNS서버 -> TLD DNS서버 -> Sub DNS서버 순으로 최종적인 google.com의 ip주소를 찾게된다.
실제 ip주소 대신 사용하기 편리한 도메인 이름을 통해 호스트에 접속하게 되는데, 이때 도메인 이름과 매치되는 ip주소를 찾고 이에 접속하게 됩니다. 이러한 시스템을 domain name system DNS라고 합니다.
도메인의 수가 너무 많기에 도메인을 관리하기 위해 도메인서버를 계층화하여 반복적으로 요청하고 응답하며 IP주소를 찾게 됩니다. DNS 서버는 루트 DNS서버 / TLD DNS 서버 / Sub dns 서버로 나뉘어있습니다.
예를 들어 naver.com 에 접속한다면 root ns에선 com을 관리하는 TLD NS서버의 주소를 알려주고, TLD NS에서는 naver.com 도메인이 관리되고 있는 sub ns의 서버를 알려주어 최종적으로 sub ns에서 ip주소를 얻게됩니다.
[응용계층]
html프로토콜로 해당 ip 주소로 request(GET)를 보낸다.
[전송계층]
웹서버와 TCP 프로토콜로 연결하여 GET요청을 보내 웹페이지를 요구한다.
TCP프로토콜
인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
- 연결형 서비스를 지원
- 3-way handshaking으로 전송의 신뢰성을 보장
3-way handshake를 통해 수신자가 받을 준비가 되어있는지, 송신자가 보낼 준비가 되어있는지 확인한 후 데이터를 안전하게 보낸다.
*SYN은 'synchronize sequence numbers', 그리고 ACK는'acknowledgment' 의 약자이다.
데이터를 다 받은 이후엔 4-way handshaking을 통해 연결을 종료한다.
WAS에서 페이지에서 요구되는 동적인 컨텐츠와 필요한 데이터를 DB로부터 받아 처리하고, 이를 웹서버에 보낸다.
웹서버 : 정적인 컨텐츠(HTML, CSS, IMAGE 등)를 요청받아 처리
WAS : 동적인 컨텐츠(JSP, ASP, PHP 등)를 요청받아 처리
서버의 http response에는 status code가 포함된다.
HTTP의 response는 3부분으로 구성되는데 Status Line, Header, Body 이다.
이때 Status Line의 Status Code는 총 5가지의 종류가 있는데,
1xx ▶️ 정보만 담긴 메세지
2xx ▶️ response 성공
3xx ▶️ 클라이언트를 다른 URL로 리다이렉트
4xx ▶️ 클라이언트 측에서 에러 발생
5xx ▶️ 서버 측에서 에러 발생
Q. 정적, 동적 개념 공부해야함.
Q. tcp/ip로 연결할 때 3-way handshaking은 통신 준비만 하는 건지? 데이터까지(html문서)까지 보내는건지?
3-way handshaking으로 요청받고 was에서 처리하고 데이터보내고 4-way handshaking으로 연결 종료하는 과정이 맞는지?
Q. http는 응용 계층 프로토콜이고, tcp는 전송계층 프로토콜, ip는 네트워크 계층 프로토콜.
네트워크계층 ip - 경로를 선택하고 주소를 정하고 경로에 따라 패킷을 전달
전송계층 tcp - 전송계층의 경우 양 끝단(End to End)의 사용자들이 데이터를 주고 받을 수 있게 하는 계층
응용계층 http - 응용 계층은 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행
=>
서버-클라이언트 동작할때 아래와 같이 되는게 맞는지?