HTTP communication usually takes place over TCP/IP connections. The
default port is TCP 80 [19], but other ports can be used. This does
not preclude HTTP from being implemented on top of any other protocol
on the Internet, or on other networks. HTTP only presumes a reliable
transport; any protocol that provides such guarantees can be used;
the mapping of the HTTP/1.1 request and response structures onto the
transport data units of the protocol in question is outside the scope
of this specification.
TCP 는 connecton-oriented 방식이므로, 소켓에 접속이 들어오면 서버에서는 응답할 때 별도로 요청자의 IP와 포트를 지정할 필요가 없습니다. 해당 소켓에 요청한 내용에 대한 응답을 써 주면 클라이언트쪽에 전달됩니다.
간단히 얘기하면 다른 TCP 서버들과 동일하게 동작합니다.
1. 클라이언트에서 서버로 연결요청
2. 서버에서 연결수락
(연결됨)
3. 소켓에 원하는 대상 전송요청을 하는 GET명령 보냄
4. GET 명령 파싱 후 소켓을 통해 대상전송
(연결종료)
웹서버와의 통신은 기본적으로 TCP/IP 통신입니다. 다른 분들이 올려 주신 글을 자세히 한번 읽어 보세요. 그런데 HTTP/FTP 등의 통신은 먼저 RFC를 다운 받으셔서 가지고 계시는것이 가장 빠른길입니다. 그런 다른에 한가지씩 차근 차근 접근해보세요. 그런후에 HTTP 프로그램들을 소스포지 같은곳에서 다운 받으셔서 한번 비교를 해보세요. 그러면 아 이런곳을 좀더 추가 해야 겠구나 하고 좀더 단단해질겁니다.
1. HTTP 통신에서 자료를 주고 받는 방법은 POST/GET 두가지 방법이 있습니다. 그런데 일반적인 웹서버와의 통신은 POST를 쓰시는 방법이 좋습니다. 크기의 제한이 없거든요. 이것은 실제 HTML 문서가 전송되어야 할 부분에 프로그램 전문을 전송 하는 방법입니다.
2. HTTP 헤더 작성시 유의 하세요. HTTP 통신에서 가장 애를 먹는게 헤더를 작성할때입니다. RFC를 보시고 차근 차근 하나씩 만들어 보시고 다른 웹서버들은 어떻게 응답하는지 한번 TELNET으로 직접 한번 접속해보시면 됩니다.
3. RFC에서 규칙을 보고 따라 하세요. 예를 들면 전송후에 접속을 반드시 끊는다던지 등등...
찾아보니까 HTTP 프로토콜 만만치 않네요 ㅎㅎ 헤더들이 문자열로 이루어
찾아보니까 HTTP 프로토콜 만만치 않네요 ㅎㅎ 헤더들이 문자열로 이루어 졌군요.
Request의 경우TCP/IP의 상위에서 데이터를 주고 받고...
메시지의 헤더는 4가지 종류가 있네요
모두다 전개하지는 않았고요.... 아래와 같은 형식으로 되어 있네요.(아고 힘들러라.
exam)
서버가 데이터를 받으면...
아주 간단하게 한다면
처리가 되겠지용....
한마디로 대답하기는 힘들고요. 프로토콜의 스펙을 조금은 알고 있어야 합니다.
참고) RFC2068.txt
그나저나 백수 언제 탈출하냐... ㅡㅡ; 배고파라.
HTTP는 일반적으로 TCP 로 통신을 하고, 기본 포트로는 80번을 사
HTTP는 일반적으로 TCP 로 통신을 하고, 기본 포트로는 80번을 사용합니다.
TCP 는 connecton-oriented 방식이므로, 소켓에 접속이 들어오면 서버에서는 응답할 때 별도로 요청자의 IP와 포트를 지정할 필요가 없습니다. 해당 소켓에 요청한 내용에 대한 응답을 써 주면 클라이언트쪽에 전달됩니다.
간단히 얘기하면 다른 TCP 서버들과 동일하게 동작합니다.
웹서버와의 통신은 기본적으로 TCP/IP 통신입니다. 다른 분들이 올려
웹서버와의 통신은 기본적으로 TCP/IP 통신입니다. 다른 분들이 올려 주신 글을 자세히 한번 읽어 보세요. 그런데 HTTP/FTP 등의 통신은 먼저 RFC를 다운 받으셔서 가지고 계시는것이 가장 빠른길입니다. 그런 다른에 한가지씩 차근 차근 접근해보세요. 그런후에 HTTP 프로그램들을 소스포지 같은곳에서 다운 받으셔서 한번 비교를 해보세요. 그러면 아 이런곳을 좀더 추가 해야 겠구나 하고 좀더 단단해질겁니다.
1. HTTP 통신에서 자료를 주고 받는 방법은 POST/GET 두가지 방법이 있습니다. 그런데 일반적인 웹서버와의 통신은 POST를 쓰시는 방법이 좋습니다. 크기의 제한이 없거든요. 이것은 실제 HTML 문서가 전송되어야 할 부분에 프로그램 전문을 전송 하는 방법입니다.
2. HTTP 헤더 작성시 유의 하세요. HTTP 통신에서 가장 애를 먹는게 헤더를 작성할때입니다. RFC를 보시고 차근 차근 하나씩 만들어 보시고 다른 웹서버들은 어떻게 응답하는지 한번 TELNET으로 직접 한번 접속해보시면 됩니다.
3. RFC에서 규칙을 보고 따라 하세요. 예를 들면 전송후에 접속을 반드시 끊는다던지 등등...
즐거운 하루 되세요.
음 일단 저도 http 프로그래밍은 잘 모르지만hedic이란 프로
음 일단 저도 http 프로그래밍은 잘 모르지만
hedic이란 프로그램이 있습니다. 야후 사전에서 쿼리를 받아오는 프로그램인데요. 지금은 관리가 안되고 있구요. kldp.net에 있습니다.
구조가 간단해서 http 리퀘스트를 어떻게 받아오는지 대충 알겠더군요.
일단 http는 텍스트로 GET , POST 등등으로 시작하는 데이터를 보내면 되더군요. 레퀘스트 끝에는 \n 문자로 줄바꿔주고요.
물론 윗분 말씀대로 확실히 하시려면 스펙을 보셔야 할 겁니다.
이렇게 시작하고요.
submit(argv[1]);
에서 http 리퀘스트를 보내는데
SURL은 #define SURL "http://kr.engdic.yahoo.com/result.html?p="
이렇게 정의되어있구요 str은 쿼리할 단어(argv[1])입니다.
rommance.net
RFC를 보시길..
RFC를 참고하세요.
영문 -> www.ietf.org
한글 -> http://www.linox.net/Mystuff/HTTP_doc/C11.html
댓글 달기