소켓에 대하여
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

소켓에 대하여에 대한 보고서 자료입니다.

목차

1. 소개

2. UNIX BSD 소켓과 윈속의 차이점

3. connection의 유형

4. address 지정

5. port

6. 소켓 인터페이스

7. 연결 지향 모델
7.1 바인딩
7.2 인터넷 주소변환
7.3 listening
7.4 accepting
7.5 클라이언트내의 연결
7.6 data send, receive
7.7 연결을 닫기

8. 무연결 지향 모델
8.1 메시지를 보내고 받기

9. 두 모델의 차이

10. 어플리케이션

본문내용

st void *buffer , size_t length, int flags);
recv : 데이터를 읽어 올 파일기술자와 데이터를 저장해야 할 buffer, 그리고 버퍼의 length를 지정. read와 마찬가치로, recv는 읽혀진 데이터의 양을 반환함.
flags : 데이터를 받을 수 있는 방법에 영향을 미침.
7.7 연결을 닫기
소켓의 다른 한 쪽에 있는 프로세스의 예기치 않은 죽음을 현명하게 처리하는 것은 대단히 중요한데, 소켓은 양방향 통신 기법이기 때문에 통신에 단절이 발생했을 경우 한 프로세스가 읽기를 시도할 것인지 또는 쓰기를 시도할 것인지 예상할 수 없으며 close 시스템 호출이 소켓에 사용될 수도 있음.
만일 SOCK_STREAM 타입이 사용되면 커널은 소켓으로 보내어지는 모든 데이터들이 반드시 수신 프로세스로 보내질 것을 보장되고, 모든 미해결된 데이터가 전달될 때까지 닫기 연산이 봉쇄(block)될 수도 있음(만일 타입이 SOCK_DGRAM이면 소켓은 즉각적으로 닫혀짐).
8. 무연결 지향 모델
무연결 모드 - 클라이언트와 서버 사이에 전송되는 패킷들이 그 목적지에 불확실한 순서로 도착함. (무연결 모델에서 네트워크를 통해 메시지를 보내고 받으려는 프로세스는 반드시 자신의 로컬 소켓을 실질적으로 네트워크에 대한 gateway로 사용가능)
메시지를 보낼때 - 그 프로세스는 반드시 목적지 주소를 알아야 함. (여러 기계를 망라하는 '방송 주소'가 될 수 있음)
8.1 메시지를 보내고 받기
sendto와 recvfrom - 두 호출의 sockfd 인수는 지역적으로 바인딩되어 있는 소켓을 지정하며, 이 소켓을 통해 메시지를 보내고 받게 됨.
ssize_t recvfrom(int sockfd, void *message, size_t Length, int flags , struct sockaddr *send_addr, size_t *add_len);
ssize_t sendto(int sockfd, const void *message, size_t length, int flags, const stluct sockaddr *dest_addr, size_t dest ten) ;
recvfrom - 만일 send_addr이 NULL로 설정되어 있다면, recv와 정확히 똑같이 동작함. message 포인터 : 수신된 메시지를 넣어둘 버퍼
length : 메시지로 읽혀질 바이트 수
flags : recv 호출에서와 동일한 값들을 가짐.
마지막 두 인수 : 통신의 무연결 형태를 도와주는 것
(send_addr : 메시지를 보낸 기계의 주소 정보로 채워질 것. 이것은 수신 프로세스가 원할 경우 응답을 보낼 수 있다는 것을 의미함.
size_t : 정수에 대한 포인터로, 호출이 끝나면, 주소의 길이로 채워짐.
sendto - recvfrom의 반대로 dest_addr 인수는 메시지가 보내어 질 기계의 주소를 보관한 구조체를 지정하고, dest_len은 주소의 길이를 지정함.
9. 두 모델의 차이
두 모델 모두 서버는 소켓을 생성하고 자신의 지역(local) 주소를 그 소켓에 바인딩하는데, 연결 모델에서는 서버는 들어오는 연결에 대해 반드시 듣기를 시작해야 하고, 무연결 시나리오에서는 이러한 두 번째 단계가 필요 없음.
왜냐하면, 클라이언트가 더 많은 일을 할 것이고 클라이언트의 관점에서 연결 모델에서 클라이언트는 단지 서버에 연결만 하고, 무연결 모델에서 클라이언트는 반드시 소켓을 생성하고 그리고 자신의 지역 주소를 그 소켓에 바인딩해야함.
마지막으로, 데이터를 전송하기 위해 통상 서로 다른 시스템 호출이 사용.
- send와 recv 시스템 호출은 두 모델 모두에서 사용될 수 있지만 sendto와 recvfrom 호출은 메시지를 보낸 기계에 대한 정보를 서버가 꺼내와 적절히 응답할 수 있도록 통상 무연결 모델에서 사용됨.
10. 어플리케이션
- 사용자가 액세스하는 고수준의 서비스를 제공하고 사용자가 기반 인터넷의 능력을 알 수 있는 방법을 결정.
- 정보를 표시하는 형태와 사용자가 정보를 선택하거나 액세스하는 메커니즘을 정의함.
- 가장 중요한 기능은 인터넷에서 사용가능한 물리적, 추상적 자원 모두를 식별하는데 사용하는 기호 이름을 정의 사용자가 저수준의 주소를 이해하거나 기억할 필요없이 기호 이름에 해당하는 수치로 변환( 예: 전자메일 송수신, 저장 정보 접근, 파일 전송)
<예> 자바 애플릿을 사용한 사용자 인증 및 안전한 통신 시스템 설계 및 구현
그림 1. 클라이언트와 서버 연결 설정
(그림 1)의 과정을 단계적으로 살펴보면 다음과 같음.
1) 서버의 정보를 요청하기 위하여 브라우저에 서버 URL 주소를 입력.
2) 서버 애플릿이 클라이언트에 다운로드와 동시에 클라이언트 시스템의 로컬 웹 페이지와
로컬 어플리케이션을 실행.
3) 로컬 어플리케이션이 실행 되면서 서버 어플리케이션과 소켓 접속.
4) 로컬 애플릿은 사용자와의 인터페이스 역할을 담당하며, 로컬 어플리케이션은 서버와
어플리케이션과 통신을 실행.
■ 실제적으로 네트워크상의 통신은 클라이언트의 로컬 어플리케이션과 서버의 원격 어플리케이션이 수행하게 됨.
1) Diffie-Hellman 방식의 키 교환 및 사용자 인증
클라이언트가 서버에 접속하면 Diffie-Hellman 방식의 키 교환 알고리즘을 수행.
키 교환 알고리즘에 의한 세션키 생성 과정을 보여줌(그림 2)
그림 2. Diffie-Hellman 키 교환 방식에 의한 세션키 생성
클라이언트와 서버가 세션키를 공유하게 되면 상호인증을 수행함(그림 3)
그림 3. 클라이언트와 서버 상호인증
위 과정이 완료되면 송신 측에서 암호화된 데이터를 클라이언트에 전송하고 수신 측은 데이터를 복호화하여 사용자에게 제공함.
2) 데이터 암호화에 의한 안전한 통신 채널 구성
안전한 데이터 전송을 위하여 Diffie-Hellman 키 교환프로토콜에 의하여 얻어진 키를 세션키로 사용.
클라이언트 시스템의 사용자로부터 입력된 메시지가 어떻게 암호화되어 전송되고, 서버 에서 복호화 되는지를 보여줌(그림 4)
그림 4. 안전한 통신 채널 구성
  • 가격1,500
  • 페이지수10페이지
  • 등록일2003.12.11
  • 저작시기2003.12
  • 파일형식한글(hwp)
  • 자료번호#237654
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니