티스토리 뷰

반응형



* 본 포스팅은 한국소프트웨어진흥원 출처의 리눅스 네트워크 프로그래밍 PDF 파일을 토대로 작성되었습니다.

* 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있음을 밝힙니다.




소켓 개설


○ 통신을 하기위해 필요한 정보

- 통신에 사용할 프로토콜 (TCP 혹은 UDP)

- 사용자의 IP 주소

- 사용자의 포트번호

- 상대편의 IP 주소

- 상대편의 포트번호






소켓 만들기


○ 소켓 만들기

- 소켓 프로그래밍 시 가장 먼저 해야할 일

- 서버, 클라이언트 양측 모두 필요

- socket() 함수 이용 (에러 발생시 -1 리턴, 전역변수 errno에 에러코드)




※ socket() 함수

1

int socket(int protocolFamily, int type, int protocol);



○ protocolFamily (domain)

- 프로토콜 체계를 말하며 5가지 방식이 있음.

- PF_INET : 인터넷 프로토콜 (TCP/IP를 사용하기 위해 기본적으로 인터넷 프로토콜 지정)

- PF_INET6 : IENT IPv6 프로토콜

- PF_UNIX : 유닉스 방식 프로토콜

- PF_NS : 제록스 네트워크 시스템의 프로토콜

- PF_PACKET : 리눅스에서 패킷 캡쳐를 위해 사용


○ type (서비스 타입) : 프로토콜에 따라 3가지 방식이 있음

- SOCK_STREAM (스트림) : TCP 방식

- SOCK_DGRAM (데이터그램) : UDP 방식

- SOCK_RAW : Raw 방식(TCP나 UDP를 거치지 않고 바로 IP 계층 사용시)


○ protocol : 소켓에서 사용할 프로토콜

- IPPROTO_TCP : TCP 방식

- IPPROTO_UDP : UDP 방식

- 0 : type에서 미리 정해진 경우





반응형
공유하기 링크
태그 클라우드
, , , ,
프로필사진

Yowu (Yu Yongwoo)

흔한 Node.js/Java 백엔드 개발자입니다
Ubuntu와 MacOS 데스크탑 개발 환경을 선호합니다
최근에는 vscode와 IntelliJ를 사용하고 있습니다
vscode에는 neovim, IntelliJ는 ideaVim
개발용 키보드는 역시 HHKB Pro 2 무각입니다
락 밴드에서 드럼을 쳤습니다

  • 프로필사진 Inasis PE_IENT 부분에 오타가 있네요. PE_INET, PE_INET64에요.
    제가 말해드리지 않아도 언전가 찾아서 수정하시겠지만 조금 더 빨리 수정하시라고
    댓글로 달아서 알려드릴게요 :)
    2015.04.06 02:24
  • 프로필사진 Inasis PF_INET, PF_INET6 이네요ㅋㅋ 저도 실수, 2015.04.06 02:32
  • 프로필사진 BlogIcon Yowu 아이고.. 포스팅한지 1년이 넘었는데 이제야 알게되었네요ㅜㅜ 지적 감사드립니다. 2015.04.07 04:26 신고
댓글쓰기 폼