programming study/CS-WEB

HTTP 웹 기초

gu9gu 2022. 11. 16. 18:44

Protocol

컴퓨터와 컴퓨터가 인터넷을 통해서 통신할 때 필요한 통신 규약

 

TCP/IP

인터넷 환경에서 데이터를 전송하는 통신 규약

TCP와 IP의 특성을 합친 것으로 IP주소체계를 통해 TCP특성을 이용해 신뢰성 높은 데이터 송수신을 보장하는 규약입니다.

 

IP (Internet Protocol)

다른 컴퓨터와 구별할 수 있도록 할당되는 IP주소를 통해 패킷 단위로 네트워크 간 전송하는 규약입니다.  신뢰성과 연결성(연결되어있다는 보장)이 없어 데이터 손실이 발생 할 수 있기 때문에 TCP와 함께 사용합니다.

 

TCP ( Transmission Control Protocol )

IP가 그저 목적지를 제대로 찾아가는 것에 중점을 둔다면 TCP는 3 way handshake 방식을 사용하여 통신하고자 하는 양쪽 단말이 준비가 되었는지 또 여러 정보들을 이용해서 데이터의 순서가 보장되는지와 같은 것에 중점을 둔 신뢰성을 보장하는 프로토콜입니다.

 

UDP ( User Datagram Protocol )

3 way handshake 방식을 사용하지 않아서 연결이 보장되지 않고 전송 데이터에 순서 정보나 검증 정보를 포함하고 있지 않아서 신뢰성이 없지만 가볍고 속도가 빠릅니다. IP랑 비슷한데 port가 추가된 점, 어플리케이션에서 응용해서 사용할 수 있다는 점이 다르다.

 

PORT

여러 어플리케이션이 같은 IP를 사용할 떄 구분하기 위한 것

 

DNS ( Domain Name System)

IP주소(200.200.122.101 이런식으로 되어있음)는 외우기 힘드니 Domain Name을 지정해놓고 사용하는 시스템이다. DNS 서버에 도메인 이름으로 요청하면 IP로 바꿔서 반환해줍니다.

 

URI ( Uniform Resource Identifier )

공통의 인식하기 위한 자원입니다.. URI는 Location을 의미하는 URL과 Name을 의미하는 URN으로 나눠집니다. URL은 {스키마}://{host}:{port}{path}{query parameter}로 구성됩니다.

htps://google.com:443/search?q=ef....

 

웹 브라우저의 동작 흐름

간단히 말하면 웹 브라우저가 웹서버에 요청해서 데이터를 가져와 보여주는 것

1. 웹 브라우저의 url 창에 domain name 을 입력하면  웹 브라우저는 dns 서버에 domain name으로 요청해서 ip주소를 반환 받습니다.

3. 웹 브라우저가 HTTP 요청 메세지를 생성합니다.

4. dns서버로부터 반환 받은 ip주소를 이용해서 3-way handshake 방식으로 서버와 연결 합니다.(데이터 전송 가능하다는 논리적 연결)

5. TCP/IP 계층으로 HTTP 메세지를 보내서 HTTP메세지가 포함된 TCP/IP 패킷을 생성합니다.

6. 패킷을 서버로 보내고 서버는 패킷 안에 있는 HTTP 메세지를 해석하여 동작합니다.

7. 서버가 HTTP 응답 메세지를 만들어서 패킷에 담아 웹 브라우저로 반환합니다.

8. 웹 브라우저가 응답 패킷을 받으면 패킷의 응답 메세지에서 HTMP 데이터를 가져와 렌더링 하여 화면을 보여줍니다.

 

HTTP ( HyperText Transfer Protocol )

클라이언트와 서버간 HTML 문서 뿐 아니라 모든 데이터를 주고 받을 수 있는 프로토콜입니다.

HTTP 메세지를 이용해서 요청 응답을 하고 stateless 프로토콜이고 비연결성 프로토콜입니다.

 

 

stateless(무상태) 프로토콜

서버가 클라이언트의 요청에 대한 정보를 보존하지 않는 프로토콜입니다.

클라이언트 요청 시에 필요한 모든 정보로 요청하기 때문에 불필요한 정보가 포함될 수 있다는 단점이 있지만 어느 서버든 응답이 가능해서 서버 장애 발생 시에 서버를 쉽게 바꿀 수 있고 서버를 여러 대로 확장하는데 적합합니다.

따라서 stateless하게 설계하고 정보를 유지해야 할 때만 stateful하게 설계하면 됩니다.

sateful (상태유지) 프로토콜은 서버가 클라이언트 요청에 대한 정보를 보존하고 클라이언트가 추가적인 요청을 하는 방식이여서 데이터를 주고 받던 서버를 쉽게 바꿀 수 없습니다.

 

 

비연결성 프로토콜

클라이언트가 서버에 요청을 보내고 응답이 오면 연결을 유지하지 않고 끊는 프로토콜입니다. 최소한의 필요한 연결만 하기 때문에 유지 비용이 적게 들고 통신이 빠릅니다. 하지만, 전송할 데이터가 많을 때 데이터 전송할 때 마다 TCP/IP 연결을 다시 해야하는 게 단점입니다. 즉 3-way handshake가 반복됩니다. 이를 극복하기 위해 지속 연결(Persistent Connections)을 사용합니다. 지속 연결은 모든 데이터에 대한 요청/응답이 끝날 때까지 연결을 유지하는 것입니다.

세션 (session)

서버에서 클라이언트들을 구별하는 상태를 저장하는 기술

특징은 서버에 저장하기 때문에 쿠키에 비해 보안성이 좋고 서버에 부하를 걸리게 합니다. 

브라우저를 종료하면 세션을 제거합니다.

 

쿠키 (cookie)

클라이언트 즉 브라우저에 데이터를 저장하는 기술

브루아져에 저장하기 때문에 보안에 취약합니다.

용도는 브라우저에 로그인 정보 저장해서 로그인 상태 유지, 쇼핑몰에서 장바구니, 최근 검색한 정보로 광고 추천 등이 있습니다.

 

 

개발자 도구 - network단

reuqest Headers: 브라우저가 보낸 정보

response Headers : web서버에서 보낸 정보, Connection, Content-Length, Date, Keep-Alive 는 tomcat에서 자동으로 만들어주는 정보

 

 

 

 

 

 

 

 

 


참고
HTTP - https://velog.io/@surim014/HTTP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

HTTP 메세지, Stateless, 비연결성 - https://ryusm.tistory.com/162

'programming study > CS-WEB' 카테고리의 다른 글

CORS와 쿠키(Same-Site, Secure, httpOnly), CSRF와 XSS  (0) 2023.02.27
OSI 7계층  (0) 2023.01.13
OAuth2.0  (0) 2022.12.30
REST API  (0) 2022.12.06