Network 12

GET & POST

1. GET1) GET클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메소드GET을 통한 요청은 URL 주소 끝에 파라미터로 포함되어 전송URL 끝에 ?를 사용하여 쿼리 스트링을 이어 붙임Ex)www.example.com/show?name1=value1&name2=value2서버에서는 name1과 name2라는 파라미터 명으로 각각 value1과 value2를 전달 받음 2) GET의 특징캐시가 가능GET을 통해 서버에 리소스를 요청할 때 웹 캐시가 요청을 가로채 리소스의 복사본을 반환브라우저 히스토리에 남음브라우저 히스토리방문한 웹페이지 기록북마크 가능북마크특정 웹 주소를 쉽게 찾아갈 수 있도록, 주소를 목록 형태로 저장해둔 것길이 제한브라우저마다 제한이 다름보안 문제GET 요청..

Network/HTTP 2024.06.27

HTTP

1. HTTP(HyperText Transfer Protocol)1) HTTP 개요웹 상에서 정보를 주고 받을 수 있는 프로토콜주로 HTML 문서를 주고 받음서버와 클라이언트 사이에 요청과 응답을 주고 받는 프로토콜클라이언트/서버 프로토콜= Request/Response 프로토콜클라이언트와 서버는 개별 메세지를 교환하여 통신Request는 클라이언트가 보낸 메세지, Response는 서버가 클라이언트 요청에 대한 응답 메세지Request는 수신자(ex. 웹 브라우저)에 의해 시작TCP를 사용하며 80번 포트 이용하는 L7 애플리케이션 계층 프로토콜  2. HTTP  시스템 구성요소 클라이언트사용자를 대신하여 작동하는 모든 도구로 주로 웹 브러우저에 의해 수행웹 브라우저항상 요청을 시작하는 개체웹 페이지를..

Network/HTTP 2024.06.27

멀티스레드 : 리눅스 2

2023.11.19 - [Network/소켓통신(Linux)] - 멀티스레드: 리눅스 1 멀티스레드: 리눅스 1 2023.11.19 - [Network/소켓통신(Linux)] - 멀티스레드 개념 멀티스레드 개념 1. 스레드 기초 1) 소켓 응용 프로그램과 멀티스레드 멀티스레드를 사용하지 않는 경우 문제 두 개 이상의 클라이언트가 서버 kmg0157.tistory.com 2. 멀티스레드 TCP 서버 1) 멀티스레드 TCP 서버 동작 클라이언트가 접속하면 accept() 함수는 클라이언트와 통신할 수 있는 소켓 리턴 클라이언트와 통신을 담당할 스레드를 생성 이때, 스레드 함수에 소켓을 넘겨줌 스레드 함수는 인수로 전달된 소켓을 소켓 타입(정수형)으로 변환하여 저장 getpeername() 함수를 호출하여 클..

멀티스레드: 리눅스 1

2023.11.19 - [Network/소켓통신(Linux)] - 멀티스레드 개념 멀티스레드 개념 1. 스레드 기초 1) 소켓 응용 프로그램과 멀티스레드 멀티스레드를 사용하지 않는 경우 문제 두 개 이상의 클라이언트가 서버에 접속할 수 있으나, 서버가 동시에 두 개 이상의 클라이언트를 서 kmg0157.tistory.com 이전 게시글을 통해 개념 참고 1. 스레드 API 1) 스레드 생성과 종료 리눅스에서 스레드를 생성할 때는 pthread_create() 함수 사용 #include int pthread_create( pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg ) // 성공 시 0, 실..

멀티스레드 개념

1. 스레드 기초 1) 소켓 응용 프로그램과 멀티스레드 멀티스레드를 사용하지 않는 경우 문제 두 개 이상의 클라이언트가 서버에 접속할 수 있으나, 서버가 동시에 두 개 이상의 클라이언트를 서비스 할 수 없음 서버와 클라이언트의 send()와 recv() 호출 순서가 서로 맞아야함 데이터를 보내지 않은 상태에서 양쪽에서 동시에 recv()를 호출하면 교착상태(Deadlock)가 발생 교착상태란 영원히 일어나지 않을 사건을 기다리는 상황 recv()에서 빠져나가지 못하고 send() 를 호출할 수 없어 교착상태가 발생 다중 처리 문제 해결책 서버가 각 클라이언트와 연결하여 통신하는 시간을 짧게 줄임 클라이언트가 데이터를 전송하기 전에 매번 서버에 접속하고, 전송 후에는 곧바로 접속을 끊는 방식 특별한 기법을..

TCP 동작 과정 및 함수 정리

1. TCP 서버 함수 1) 서버 함수 동작 socket() 함수로 소켓을 생성함으로써 사용할 프로토콜을 결정 bind() 함수로 소켓을 지역 IP 주소와 지역 포트 번호를 결정 listen() 함수로 소켓의 TCP 함수를 LISTENING으로 변경 accept() 함수로 클라이언트 접속을 수용하고, 접속한 클라이언트와 통신할 수 있는 새로운 소켓을 생성 이때, 원격 IP 주소와 원격 포트 번호가 결정 send() 함수와 recv() 함수 등의 데이터 전송 함수로 클라이언트와 통신을 수행한 후 close() 함수로 소켓을 종료 새로운 클라이언트 접속이 들어올 때마다 4~5 동작을 반복 2) bind() 함수 소켓의 지역 IP 주소와 지역 포트 번호를 결정 #include #include int bind(..

데이터 전송하기

1. 응용 프로그램 프로토콜과 데이터 전송 1)응용 프로그램 프로토콜(Application Protocol) 응용 프로그램 수준에서 주고받는 데이터의 형식과 의미, 처리 방식을 정의한 프로토콜 표준화 되어 있지 않음 응용 프로그램마다 다르게 정의함 응용 프로그램 프로토콜이 결정되면, 데이터를 정해진 형식과 절차에 따라 주고 받도록 소켓 함수를 이용하여 구현 주고 받을 데이터를 구조체로 표현 그러나 구조체 정의만으로는 데이터 전송 형식을 만족하지 않음 2) 데이터 전송 다음과 같은 추가 정보를 통해 TCP 처럼 메세지 경계를 구분하지 않는 프로토콜을 사용할 때, 응용 프로그램 수준에서 경계를 구분 경계 구분 바이트 정렬 구조체 멤버 맞춤 2. 다양한 데이터 전송 방식 1) 고정 길이 데이터 전송 서버와 클..

TCP 서버 - 클라이언트 구조

1. TCP 서버 - 클라이언트 개념 ▷핵심 동작 과정 서버는 먼저 실행하여 클라이언트가 접속하기를 기다린다(listen). 클라이언트는 서버에 접속(connect)하여 데이터를 보낸다(send). 서버는 클라이언트 접속을 수용하고(accept), 클라이언트가 보낸 데이터를 받아서 처리(recv)한다. 서버는 처리한 데이터를 클라이언트에 보낸다(send). 클라이언트는 서버가 보낸 데이터를 받아서 처리한다(recv). 데이터를 주고받는 과정을 모두 마치면 접속을 끊는다(close). 윈도우에서는 closesocket, 리눅스에서는 close를 사용 TCP 서버 클라이언트의 대표적인 예는, 웹 서버와 웹 브라우저의 동작 과정이다. ▷TCP 서버 - 클라이언트 동작 원리 서버는 소켓을 생성한 후 클라이언트 ..