client : 컴퓨터 노트북 핸드폰
server : 공유기, DNS, IP할당기
client 와 server 통신 방법
- 도메인 입력
- 도메인 네임에 해당하는 IP 주소 찾음
- HTTP 프로토콜을 사용해 URL 정보와 IP주소를 포함하는 HTTP 요청(Request) 메시지 생성.
메시지는 패킷으로 분할되어 TCP 프로토콜을 사용해 인터넷 망을 통해 해당 IP주소의 컴퓨터(서버)로 전송 - 메시지 받은 서버는 웹 페이지 URL정보 중 PATH와 HTTP Method에 맞는 액션 취함
- 생성된 응답 데이터는 다시 HTTP 프로토콜을 써서 메시지를 만들고 클라이언트로 전송
- 도착한 메시지는 브라우저에 의해 rendering 과정을 거쳐 출력
HTTP 프로토콜
특징
- 단방향성
서버는 클라이언트가 요청을 보내야만 응답 가능 - 비연결성
클라이언트의 요청으로 서버와 연결 후, 응답 데이터를 전송하면 연결 종료
- 실시간 통신 불가능
단점
- HTTP는 텍스트 기반이라 도청 가능
- 통신 상대 검증 안해서 보안 위험
- 안전성 증명x 변조 가능
- HTTPS 등장
HTTP Method
클라이언트가 웹 서버에게 요청의 목적이나 종류를 알리는 수단
GET, POST, PUT, PATCH, DELETE
HTTP Status Code
클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주기 위한 정보
404 Not Found, ...
패킷을 안전하게 전달해주고 혼잡제어, 흐름제어를 해주는
TCP 라는 신뢰성 있는 연결지향형 프로토콜이 필요함
file descriptor는 TCP 소켓에 대한 파일 포인터와 같은 역할
소켓 프로그래밍
HTTP보다 유연하고 다양한 방법으로 소통 가능.
클라이언트와 서버 모두 언제든지 데이터 송신 가능
유연성, 효율성, 호환성
node를 링크에 연결해 통신 상대 찾음 ( IP와 Port )
Echo server
소켓 데이터에서 들어오는 데이터를 수신한 다음 해당 데이터를 발신자에게 다시 에코하는 프로그램
소켓 연결을 생성하면 클라이언트와 서버 간에 데이터가 올바르게 송수신되는지 확인 가능.
소켓 연결이 잘 됐는지 빠르고 쉽게 확인 가능
소켓 기반 응용 프로그램의 디버깅 및 문제 해결에 유용하게 씀
소켓 식별자( descriptor ) - (소켓을 식별하고 관리하는 데 사용되는 정수 값) 사용하는 이유
클라이언트와 서버 간의 열린 소켓 연결을 나타내고 고유 식별자로 listen() 작업을 수행하는데 사용된다.
소켈 연결에서 들어오는 연결을 수신하도록 서버 프로그램을 설정하기 위해 listen() 함수와 함께 사용
글 사진 출처 :
https://pangeei-h.tistory.com/entry/Network-%ED%86%B5%EC%8B%A0-Model
'C언어 > Tiny 웹 서버' 카테고리의 다른 글
Tiny 구현 (2) | 2024.09.18 |
---|---|
Tiny 웹 서버 개요 (0) | 2024.09.17 |