티스토리 뷰
1. HTTP (HyperText Transfer Protocol) 동작 원리
웹의 동작원리는 아래 이미지와 같이 동작한다. 아래 이미지가 자세하게 나와있기 때문에 별다른 설명이 필요하지 않을거라 생각이 든다.
혹시나 좀더 자세한 설명이 필요하다면 해당 이미지의 출처인 http://tcpschool.com/webbasic/works 에서 확인해보면 좋을거 같다.
동작원리를 보다보면, DNS 와 TCP 를 보게된다. 이 부분을 더 자세히 알아보자!
2. DNS (Domain Name System) 정의 및 동작원리
DNS (Domain Name System)는 특정 컴퓨터 또는 네트워크로 연결된 임의의 장치의 주소를 찾기 위해, 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 IP 주소로 변환해주는 시스템이다. DNS는 흔히 "전화번호부"로 비유할 수 있다. DNS는 아래와 같은 방식으로 동작한다.
1. PC 내 host 파일을 확인하고, host 파일에 도메인이 있는지 확인한다. 만약 host 파일에 "www.naver.com" 도메인의 ip가 명시되있다면 바로 반환한다.
그렇지 않을 경우에는 아래 순서를 반복한다.
2. Local DNS 에 "www.naver.com" 의 IP 주소를 요청한다. Local DNS에 도메인의 ip가 있다면 바로 반환한다. 그렇지 않으면 다음 순서를 계속한다.
여기서 Local DNS 는 cmd창에서 ipconfig 명령어를 통해 확인할 수 있다. 아래 사진을 보면 DNS 서버 2개를 확인할 수 있다. PC에 IP주소를 할당할 때,
DNS 서버 IP 주소를 같이 할당받는다. 다른 DNS 서버가 동작하지 않을 경우를 대비해서 두개의 DNS 서버가 할당된다. "168.126.63.1"은 KT의 ip 이다.
3. Local DNS에 없다면, Root DNS에 요청을 한다. Local DNS에는 전세계 모든 DNS에 대한 정보를 보유하고 있는 특별한 DNS 이다.
Root DNS에는 "www.naver.com"에 대한 정보는 없지만, ".com" 도메인을 관리하는 서버에 대한 정보를 알려준다.
4. ".com" DNS에 "www.naver.com" 를 요청 한다. ".com" DNS는 "naver" 도메인을 관리하고 있는 네임서버에 대한 정보를 알려준다.
5. "naver.com" 네임서버에 "www.naver.com" 를 요청한다. 네임서버는 "www.naver.com" ip를 반환한다.
6. Local DNS가 클라이언트에게 "www.naver.com" ip 주소를 전달해준다.
3. TCP (Transmission Control Protocol) 정의 및 동작원리
PC가 다른 PC와 데이터 통신을 하기 위한 통신규약(프로토콜)의 일종이다. 연결성, 신뢰성 보장, 흐름제어, 혼잡제어의 특징을 가지고 있다.
(1) 연결설정 3-HansShake
1. Client는 Server 에 연결요청을 한다. (SYN)
2. Server는 연결 요청에 대한 응답과 통신 준비 완료에대한 메세지를 보낸다.
3. Client는 Server 가 보낸 메세지에 대한 응답 메세지를 보낸다.
(2) 신뢰성 보장 & 흐름제어 & 혼잡제어
연결설정을 통해 통신준비가 완료되면 데이터 전송이 가능하다. 그러나 네트워크를 이용해서 데이터를 전송할 수 있는 데이터의 양이 한정되었기 때문에
데이터를 분할해서 전달을 한다. 서버는 클라이언트에게 데이터를 전달할 때, 데이터와 함께 분할된 데이터 중에서 어느 부분까지 보냈는지에 대한 정보도
함께 보낸다. 클라이언트는 데이터를 받은 후, 서버에게 분할된 데이터 중에서 어느 부분부터 받아야 하는지, 얼만큼 더 받을 수 있는지에 대한 정보를 보낸다.
서버에서 아무리 많이 보낸다고 해도, 클라이언트가 처리할 수 있는 양은 한정되었기 때문에 흐름제어는 필요하다.
이를 위한 TCP의 헤더파일을 살펴보면 목적지주소, 확인응답, 오류검출및복원, 실제데이터등이 포함되어있다. 이것으로 송수신시 계속 확인응답을 보내어
잘 갔는지, 잘 왔는지 확인을 하여 데이터 신뢰도가 높다. 하지만 데이터용량이 증가하여 수신속도가 떨어진다는 단점이 따라오게 된다. 물론 그 단점보다는
신뢰성이 높다는 장점이 훨씬 크기 때문에 무시된다.
'Spring Boot' 카테고리의 다른 글
Ajax Option 정리 및 Ajax 415 Unsupported Error 원인/해결 (1) | 2019.01.04 |
---|---|
Spring Boot + JPA Paging 처리 (0) | 2018.12.27 |
What is Ajax (Asynchronous Javascript And Xml) & 회원가입 (0) | 2018.12.10 |
스프링을 통한 의존성 주입 @Autowired vs @Resource vs <property> 태그 (0) | 2018.12.07 |
redirect vs forward (0) | 2018.11.21 |