인터넷과 소켓프로그래밍 10

TCP 에코 클라이언트

● 헤더파일/* * tcpecho.c * TCP Echo Client 프로그램 * gcc -o tcpechoc hostname port 번호 * 사용법 : tcpechoc hostname port 번호 */ #include #include #include #include #include #include #include  ● struct hostent *hp, *gethostbyname();- hostent는 에 있다.struct hostent{ char *h_name; //공식 도메인 이름 char **h_aliases; //공식 이외 도메인 이름들 int h_addrtype; //주소정보 체계(IPv4: AF_INET, IPv6: AF_INET6) int h_length; //IP주소의 크기를 담는다...

TCP 에코 서버 (계속)

/* Echo Clinet가 TCP에게 접속설정 요청(connect() 수행) * 클라이언트의 TCP는 접속설정요청 패킷을 서버측 TCP에게 전송 * Echo Server측 TCP는 접속설정 요청이 도착하면 * Echo Server가 bing()를 수행하였는 지 확인하고 * ACK를 클라이언트 TCP에게 전달하고 기다림 * Echo Client측 TCP는 서버측 TCP가 전송한 ACK에 대한 ACK를 전송 * Echo Server측 TCP는 접속이 완료되었음을 Echo Server에게 알림 * 이것을 TCP에게 지시하는 함수 : accept() */ do { memeset(&cli_addr, 0, clilen); /* * 서버는 소켓 sockfd에 새로운 섭속..

소켓 개요 및 TCP 에코 서버

● IPC(interProcess Communications) Mechanism=> 서로 다른 프로세스 간에 데이터를 교환하고 상호작용하는 방법을 말한다. ○ 파이프(Pipe)=> 파이프는 두 프로세스 간의 단방향 또는 양방향 통신을 가능하게 하는 통로이다. 파이프에는 두 가지 종류가 있다. 1. 익명 파이프 (Anonymous Pipe)- 개념: 익명 파이프는 부모 프로세스와 자식 프로세스 간에만 사용될 수 있는 단방향 통신 채널이다.- 특징:    - 한 방향으로만 데이터가 흐릅니다.   - 일반적으로 부모-자식 프로세스 간의 통신에 사용된다.   - 익명 파이프는 파일  시스템에 나타나지 않으며, 메모리 상에서만 존재한다. 2. 명명된 파이프 (Named Pipe of FiFO)- 개념: 명명된 파..

소켓 프로그래밍을 위한 알아야할 기능들

● Name Resolver- gethostbyname()  ○ 도메인 이름을 이용하여 IP 주소 및 관련 정보를 구함- gethostbyaddr()  ○ IP 주소를 이용하여 도메인 이름을 구함#include struct hostent *gethostbyname (const char *hname);struct hostent *gethostbyaddr (const char *in_addr, int len, int family); ● netdb.h - Host Entry 관련#include struct hostent { char* h_name; // 호스트 이름 char** h_aliases; // 호스트 별칭 int h_addrtype; // 호스트 주소의 종류 int h_len..

포트번호와 주소변화

● Well-Known Port (1)- 인터넷표준화기국(IETF)에서 서버 포드번호를 표준으로 정한 것- /etc/services 파일에 저장되어 있음 ○ Port 7 (Echo)- 서비스 : Echo Protocal- 설명 : 클라이언트가 서버에 데이터를 보내면, 서버는 그 데이터를 그대로 반환한다. ○ TCP와 UDP의 사용 차이- TCP : 정확하게 데이터를 보낼 때- UDP : 신뢰성 없음 ● Well-Known Port (2) - /etc/services○ ftp : file  transfort protocol- 파일 전송을 위한 표준 네트워크 프로토콜입니다. 클라이언트와 서버 간의 파일 전송을 지원하며, TCP를 사용하여 연결을 수립하고 데이터 전송의 신뢰성을 보장합니다. FTP는 주로 웹 ..

서브넷 및 IPv6 주소

● 서브넷 (Subent)-> 하나의 IP 네트워크를 여러 개의 작은 네트워크로 나누는 것을 의미한다. 서브넷을 통해 네트워크의 트래픽을 더 효율적으로 관리하고 보안을 강화할 수 있다.  ○ 서브넷 주소1. 호스트 식별자 일부를 Subnet 식별자로 할당  ○ 서브넷 마스크 (Subnet Mask)-> IP 주소를 네트워크 부분과 호스트 부분으로 나누기 위해 사용되는 32비트 숫자이다. 이 숫자는 이진수로 나타내면 연속된 1의 비트와 0의 비트로 구성된다.  -> 서브넷 주소를 이용하는 사이트는 각 네트워크에 대해 32bit subnet mask를 선택해야 함. 역할1. 네트워크 식별 : 네트워크 주소를 식별하여 IP 주소의 네트워크 부분과 호스트 부분을 구분한다.2. 서브넷팅 : 네트워크를 더 작은 서..

IPv4

● SOCKET 인터페이스 - Application Process와 TCP간의 통신 수단- socket() : 네트워크 프로그래밍에서 사용되는 함수로, 소켓을 생성하는 역할을 한다. 소켓은 네트워크 상에서 통신을 수행하기 위한 엔드포인트(endpoint)를 나타낸다. - bind() :   소켓 프로그래밍에서 소켓을 특정 주소와 포트에 바인팅(결합)하는 데 사용된다. 주로 서버 소켓에서 사용되며, 소켓이 수신할 IP 주소와 포트를 지정한다. - listen() : 소켓 프로그래밍에서 서버 소켓을 수신 대기 상태로 만드는 데 사용된다. 클라이언트의 연결 요청을 받을 준비를 한다. - accept() : 소켓 프로그래밍에서 서버가 클라이언트의 연결 요청을 수락할 때 사용된다. 새로운 연결을 처리하기 위해 사..

공통통신기능 - 데이터전달

● Ethernet-> 특성 : 100Mbps broadcast bus technology with best-effort delivery semantics and distributed access control○ Bus : 모든 LAN 카드는 전송선로를 공유한다. ○ Broadcast :한 LAN 카드가 보낸 정보는 모든 LAB 카드가 수신한다.LAN 카드는 LAN 카드 식별자가 자기 것이 아니면 버린다. ○ Best effort delivery : 패킷이 잘 전달되었는 지 알 수 있는 정보가없다. ○ Distributed access control :전송선로를 누가 사용할 지 누군가 관리를하지 않는다.여러 Ethernet Card가 동시에 전송선로에 접근할 수 있다. ○ CSMA/CD (Carrier ..

공통통신기능 - IP주소와 LAN카드 주소 변환

● 기본 게이트 웨이 (Default Gateway)-> 로컬 네트워크에서 다른 네트워크로 데이터 패킷을 전달하는 라우터나 네트워크 장치를 의미한다. 네트워크에서 장치가 다른 서브넷이나 외부 네트워크로 데이터를 보낼 때, 이 데이터를 전달하기 위한 기본 경로 역할을 한다. 기본 게이트웨이는 보통 네트워크 내의 모든 장치가 접속할 수 있는 하나의 IP 주소로 지정되며, 이는 보통 라우터의 IP 주소이다. 장치가 네트워크 내부에서 통신할 때는 IP 주소를 사용하지만, 네트워크 외부로 데이터를 보내야 할 때는 기본 게이트를 통해 전송한다. ● 라우팅 (Routing)-> 네트워크에서 데이터 패킷이 출발지에서 목적지까지 가장 적합한 경로를 통해 전달되도록 하는 과정라우팅은 네트워크 장치, 주로 라우터에 의해 수..

공통통신기능 - 접속설정, 정확한 데이터 전송, 접속해제, 다음 경로 설정

● 3-way Handshake1. SYN (synchronize): 클라이언트가 서버에게 연결 요청을 보내는 단계2. SYN-ACK (Synchronize-Acknowledge): 서버가 클라이언트의 요청을 수락하고 연결을 승인하는 응답을 보내는 단계3. ACK (Acknowledge): 클라이언트가 서버의 응답을 확인하고 연결을 완료하는 단계 Client Server | | | ----------- SYN --------------> | | | | | | ..