리눅스 기초, Socket() and Bind() (9)

쓰리원·2022년 4월 24일
0

Network

목록 보기
9/17
post-thumbnail

1. 리눅스 기초

1. Low Level I/O and File Descriptor

  1. ANSI 표준함수 : fopen, fwrite, fread
    (다른 운영체제에서도 작동한다)
  2. 운영체제가 제공하는 함수 : open, write, read, soket
    (운영체제가 제공하는 함수는 다른 운영체제에서는 작동하지 않는다.)
  3. 파일 디스크립터 : 파일에 대한 ID

2. File Open & Close

int close(int fd); -> fd : 파일 디스크립터로 파일에 대한 id 값을 넘기는 것 입니다.

3. Write Data to File

buf : 작성할 글자
nbytes : 몇글자를 쓸 것인지 정하기

4. Read Data from File

2. Soket() and Bind()

1. “Protocol Family” for socket()

보통은 PF_INET 위주로 사용합니다.

2. “Socket Type” for socket()

int tcp_socket = soket(PT_INET, SOCK_STREAM, IPPROTO_TCP);
SOCK_STREAM : 연결 지향형 , 중에 TCP를 쓰겠다.

int udp_socket = soket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
SOCK_DGRAM : 비연결 지향형 중에 UDP를 쓰겠다.

3. bind()

4. Port Number

DHCP : 67 , 68, webserver : 80 같이 포트 번호가 정해진것이 well -known Port라 한다.

5. Structure for IPv4 Address

(바인드에 들어가는 구조체)

  1. sa_family_t : 2B
  2. uint16_t : 2B
  3. struct in_addr : 4B
  4. char : 8B

1번과 4번은 낭비라고 생각될 수 있다. 범용성 때문에 결과론적으로 낭비가 아닙니다. 추후내용은 다시 공부해서 적을 예정입니다.

6. Host Byte Order vs. Network Byte Order

7. Converting Dotted-Decimal Notation IP Address to Integer

8. INADDR_ANY (자기 자신의 주소)

9.Revisit Bind()

profile
가장 아름다운 정답은 서로의 협업안에 있다.

0개의 댓글