연결형 서비스
- 소켓: 네트워크 통신을 위한 소프트웨어 교신점
- 두 개의 독립 프로세스가 네트워크를 통해 통신하려면 논리적인 연관관계를 맺어주는 소켓 필요
- 서버의 동작
- Well-known 포트에서 대기
- 동작과정
- 서비스 교신점(호스트의 IP 주소, 포트번호) 공개
- 클라이언트로부터 발생하는 서비스 요구 대기
- 요청이 오면 클라이언트에 서비스 제공
- 해당 클라이언트에 서비스 제공 완료
- 단계 2로 이동, 반복
- 클라이언트의 동작
- 서버의 Well-known 포트로 접속 시도
- 동작 과정
- 원하는 서비스를 제공하는 서버 확인
- 해당 서버와 연결 시도
- 서버에 서비스 요청
- 서버에 서비스 요구 완료
- TCP를 이용한 통신 절차
- 소켓 함수의 컴파일
- 소켓 관련 라이브러리리 추가 (solaris)
- cc -o time_client time_client.c -lsocket -lnsl
- cc -o time_server time_server.c -lsocket -lnsl
- 서버 먼저 실행하고, 이어서 클라이언트 실행
- 소켓 관련 라이브러리리 추가 (solaris)
- 클라이언트 예제
# define TIME_SERVER "211.233.201.30"
# define TIME_PORT 5010
main ()
{
int sock;
struct sockaddr_in server;
char buf [256];
sock = socket (AP_INET, SOCK_STREAM, 0);
server.sin_family = AF_INET;
server.sin_addr.s_addr = htonl (inet_addr (TIME_SERVER));
server.sin_port = htons (TIME_PORT);
connect (sock, (struct sockaddr *)&server, sizeof(server));
if (recv (sock, buf, sizeof (buf), 0) == -1)
exit (1);
printf("Time information from server is %s", buf);
close (sock);
}
- 서버 예제
비연결형 서비스
- UDP를 이용한 통신 절차
- 클라이언트 예제
- 서버 예제
'CS > 네트워크' 카테고리의 다른 글
네트워크 모델 - OSI 참조 모델 (0) | 2024.09.30 |
---|---|
네트워크의 기초 - 네트워크 주소의 표현 (0) | 2024.09.30 |
데이터 링크 계층 (1) - 프로토콜의 기초 (0) | 2024.09.30 |
IP와 IP 주소 / 서브넷 (Subnet) 개념 (0) | 2024.09.24 |
ATM (Asynchronous Transfer Mode) (0) | 2024.09.23 |