본문 바로가기
C_C++ 프로그래밍/뇌를 자극하는 TCP_IP

뇌자극 TCP/IP 9강 요약

by RoJae 2019. 5. 29.



UDP 복습

연결 지향 : Threeway handshake

흐름 기반

신뢰성 : 재 전송, 재 조합

단점 : 낮은 성능, 데이터의 연속성 유지에 불리하다.

스트리밍 방송은 사용 (어느 정도의 잡음이 있어도 괜찮다)





신뢰성이 꼭 필요하면, TCP를 사용해야 하지만 그렇지 않다면 무 필요.
=> UDP

User DataGram Protocol (UDP)
DataGram 중심 프로토콜
Fire and Forget
순서가 없다
신뢰할 수 없다.
높은 성능을 기대
=> 실시간 스트리밍 방송에 사용 가능


UDP 헤더는 4개의 필드로 구성되며, 그 각각은 2바이트(16비트)로 이루어져 있다.[1]

오프셋 옥텟 0 1 2 3
옥텟 비트  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 0 출발지 포트 도착지 포트
4 32 길이 체크섬


socket(AF_INET, SOCK_DGRAM, 0)

Server

socket() -> bind ->( sendto, recefrom) -> close (listen(), accept() 사용 x)

UDP bind
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
serveraddr.sin_port = htons(1234);
state = bind(sockfd, (struct sockaddr *) &serveraddr, sizeof(serveraddr));

recvfrom(sockfd, buf, MAXLINE, 0, (struct sockaddr *) &cliaddr, &clilen);
recvfrom(sockfd, buf, MAXLINE, 0, (struct sockaddr *)&cliaddr &clilen);
sendto(sockfd, buf, strlen(buf), 0, (struct sockaddr *)&cliaddr, sizeof(cliaddr));
close(sockfd);

=> 연결 관리가 불 필요하기 때문에 간단하다.
Client
scoket() -> sendto(), recvfrom() -> close();
connect를 사용하지 않아도 되지만 사용해도 된다.
connet(sockfd, &addr, sizeof(addr));
sendto(sockfd, buf, strlen(buf, 0, NULL, len);    // NULL을 사용하면 이미 명시된 주소에 연결된다.


                

※ 본 글은 개인 포트폴리오 혹은 공부용으로 사용하기 때문에, 무단 복사 유포는 금지하지만, 개인 공부 용도로는 얼마든지 사용하셔도 좋습니다



'C_C++ 프로그래밍 > 뇌를 자극하는 TCP_IP' 카테고리의 다른 글

뇌자극 TCP/IP 11강 요약  (0) 2019.06.02
뇌자극 TCP/IP 10강 요약  (0) 2019.06.02
뇌자극 TCP/IP 8강 요약  (0) 2019.05.26
뇌자극 TCP/IP 7장 요약  (0) 2019.05.25

댓글