lamoa
55
2017-09-18 19:42:15 작성 2017-09-18 19:43:01 수정됨
4
850

ftp관련 질문입니다


갑자기 궁금해져서 질문올립니다

위키에보니 ftp가 네트워크 상에서 피씨들이 파일을 교환하기 위해 만들어진 통신 규약이라는데 php에서 파일 업다운 할때 쓰는 것(fopen, fread등)들도 ftp통신이라고 보는건가요?

네트워크를 겉핥기식으로 배웠더니 엄청 헷갈리네요

질문: 파일질라같은게 ftp통신을 사용하는 것이고 php는 http통신으로 파일 전송하는건가요? 

0
0
  • 답변 4

  • 무린
    23
    2017-09-18 19:56:01

    fopen, fread와 같은 함수는 파일을 다룰 때 사용하는 함수입니다.

    PHP에서 업로드할 때 위 함수들을 사용하셨다면 이미 업로드한 파일을 PHP가 읽기 위해 사용하셨을겁니다.

     

    위 함수들은 파일 전송 프로토콜인 ftp하고는 상관이 없습니다.

    말씀하신 파일질라와 같은 프로그램이 ftp 프로토콜을 이용해 파일을 전송합니다.

    PHP는 http 프로토콜을 이용해 파일을 업로드, 다운로드 할 수 있습니다.


    또 궁금하시면 언제든지 질문주세요.

    http://devsnote.com/u/kimho 




    0
  • lamoa
    55
    2017-09-18 21:16:14

    답변 감사합니다! 이해가 되었습니다 코드에서 업로드 한 부분이 이렇게 되어있어서 다시 질문드립니다

    file타입의 인풋태그로 파일 선택 후 php에서 $_FILES로 받아와서 서버에 쓰는 작업을 하는데요 폼으로 전송하는 것이니까 http프로토콜을 사용하여 전송한다.. 이렇게 이해하는게 맞는걸까요?

    0
  • 협군
    6k
    2017-09-18 22:08:00

    https://ko.wikipedia.org/wiki/HTTP

    https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%BC_%EC%A0%84%EC%86%A1_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C


    HTTP 나 FTP , SMTP, SNMP, IRC 등등 국제 표준으로 등록된 규약입니다. 

    데이터를 주고 받을 때 필요한 규약, 즉 규칙입니다.

    보낼 때는 데이터를 정해진 규칙대로 보내라. 받을 때는 보내진 데이터를 규칙대로 해석해라.

    HTTP 프로토콜을 분석해보면 나름 재미있습니다. 


    fopen 같은 것과는 다른 카테고리의 이야기입니다.


    0
  • 구구구구우
    1k
    2017-09-19 09:51:02

    몇가지 부족한 점이 있긴한데 방향은 일단 좋네요.

    아마 FTP 전송은 파일, HTML 전송은 HTTP 이런 생각에서 출발하신거 같은데, Input태그에서 File을 submit했을때 서버에서 받아오는 작업에 대한 것이 FTP냐 HTTP냐에 대해서 고민하는건 아주 좋아 보입니다. 겉넘어서 생각하는게 아니라 배운걸 토대로 하나씩 짚어 보는 것이니까요

    답변은 하자면 일단 맞습니다. FTP로 하는게 아니라 HTTP로 파일을 전송합니다. 

    (그렇다고 브라우저에서 파일 전송은 HTTP만 있다고 생각하면 안돼요, FTP도 브라우저에서 할수 있어요 그때는 요청 주소가 FTP로 진행이 돼구요. )

    근데 이런 질문은 이걸로 끝낼게 아니라 한번더 생각 해봐야돼요. 과연 HTTP로 파일이 전송이 될때 어떠한 형태로 가는지에 대해서, 보통 잘못된 방향을 생각하는 경우가 FIle(구초체 or 클래스 or 인스턴스 뭐든 간에) 객체가 전달된다고 생각하는 경우가 다반사인데 만약 이런식으로 생각을 하고 있다면 처음부터 공부를 다시하는게 낫습니다.

    어쨌든 해당 의문에 해답 여기다 적진 않겠습니다. 한번 생각해 보시고, 패킷 분석도구를 통해 검증을 해보는걸 추천합니다. 


    아래내용은 그리 중요하지 않습니다.

    하나 더 공부할걸 추천하자면 해당 File이 HTTP통신을 통해 서버로 전송했을때 서버에서는 어떤식으로 해석해야하는지에 대해서도 공부하면 좋은데 제가 PHP는 안해봐서 모르지만 JAVA에서는 보통 이미 구현된 API를 통해 파일을 받아 처리하지만 사실 그러한 API들은 내부적으로는 어떠한 일련의 해석작업이 구현되어있습니다. 즉 HTTP로 전송된 파일에 대해서 그냥 받으면 파일이 되는게 아니라 일력의 해석작업이 이뤄져야 파일을 정상적으로 받을수 있다는 겁니다. (사실 중요한 내용은 아니에요. 그냥 Protocol이란건 항상 어떤 해석이 이뤄지는 과정이 필요하거, 또 Protocol 내부의 담긴 데이터도 해석이 필요한 경우가 있다는 걸 아는것이 중요해서 적어 봅니다.)

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.