본문 바로가기
IT 이론/네트워크&무선통신

인터넷 통신 정리

by 지식id 2013. 6. 15.
반응형

half-close

1. 소켓의 우하한 종료를 위해선 shutdown함수를 이용한다.

2. 일방적인 close는 다른한쪽에서 전송할 데이터가 남았을때 문제가 된다.

 

DNS

in_addr*이 아닌 char*인 이유 : IPv4만을 위해 정의된 구조체가 아니기 때문

 

IPv6

1. IPv4의 주소 부족 문제를 해결하기 위한 대응책

   (NAT, DHCP를 이용한 임시방편에는 한계가 있음)

2. 유무선 인터넷을 이용한 단말기 서비스의 효율적인 지원

3. 취약한 인터넷 보안 취약점 보완

4. 32비트 -> 128비트 주소 사용. 부족문제 근본적으로 해결

   (주소에 계층정보, 범위정보 등을 포함할 수 있음)

5. 불필요한 헤더 필드 제거, 헤더 필드 구조의 단순화, 패킷 속도 향상

6. IPv6 패킷 구성 : 기본 헤더, 확장 헤더, 데이터 필드

 

소켓의 옵션

SOL_SOCKET 계층, IPPROTO_IP 계층, IPPROTO_TCP 계층으로 나눔

 

-Binding Error 해결을 위한 SO_REUSEADDR

 

readv, writev 입출력 함수

1. 데이터를 모아서 전송하고 모아서 수신하는 함수

2. 소켓에만 제한된 함수가 아니다.

3. iovec이라는 구조체를 이용한다. 어느 배열에서 얼마만큼을 담고 있는 구조체로

   포인트를 이용해 여러개를 인자로 사용하기 때문에 여러 데이터를 한번에 전송한다.

4. 여러개의 배열에 있는 데이터를 한번에 전송 할 수 있다.

5. 사용할 수 있으면 사용하는게 좋다. (특히 Nagle 알고리즘이 중지된 때)

 

멀티플렉싱

1. 하나의 통신채널을 통해서 둘 이상의 데이터를 전송하는데 사용되는 기술

2. select 함수 이용. event를 관찰하여 순서대로 호출

3. 매크로 함수 이용. FD_ZERO(초기화), FD_SET, FD_CLR 등

 

-epoll

4. 모든 파일 디스크립터를 대상으로 할땐 반복문을 사용 할 수밖에 없음

5. select 함수는 함수를 호출할 때마다 관찰대상에 대한 정보를 매번 운영체제에 전달

6. select 함수는 너무 예전에 만들어져서 효율적이지 못함. cf Linux epoll

7. 접속자 수가 많지 않을때, 다양한 운영체제에서 같이 운영될때는 select가 적합

 

-level trigger, edge trigger

8. 레벨 트리거는 입력 버퍼가 남아있는 동안 계속해서 이벤트가 등록된다.

9. 엣지 트리거는 입력버퍼로 데이터가 수신된 상황에서 한번만 이벤트가 등록된다.

10. 엣지 트리거는 데이터 수신과 처리를 따로 할 수 있기 때문에 더 효율적이다.

 

멀티캐스트(IDP) :

1. 한번의 전송으로 여러명에게 전송

2. 그룹별로 전송하고, 그룹은 자유롭게 추가가능

3. TTL 패킷을 얼마나 멀리 전달할 것인가? 너무 작으면 전달안됨, 너무 크면 트래픽에 악영향

4. TTL 설정 :  IPPROTO_IP계층의 IP_MULTICAST_TTL 옵션 수정(정수값)

5. 그룹 가입 : IPPROTO_IP계층의 IP_ADD_MEMBERSHIP 옵션 수정(주소값)

6. MBone(Multicast Backbone) 가상 네트워크

7. 라우터상에서 복제가 이루어지므로 서버의 트래픽면에서 효율적이다.

 

브로드캐스트(UDP) :

1. 일반적인 UDP와의 차이는 IP설정밖에 없다.

2. Directed BC : 192.12.34.255, Local BC : 255.255.255.255

3. 브로드캐스트를 허용하려면 SOL_SOCKET의 SO_BROADCAST를 1로 변경 해줘야됨 

4. 멀티캐스트와의 차이 : 그룹가입이 아닌 동일 네크워크에 뿌려줌

 

멀티쓰레드

1. 멀티프로세스의 단점 : 무거운 작업, 데이터교환이 힘듬

2. + Context switching이 과도하게 발생

3. 쓰레드 : 데이터 교환 문제없음, Context switching이 다소 가벼움

4. POSIX 표준의 pthread이용.

5. thread의 종료 : pthread_join(blocking problem), pthread_detach

 

표준 입출력함수

1. (장)이식성이 좋다. 모든 운영체제에서 작동한다.

2. (장)추가적인 버퍼를 제공받는다. 성능향상에 도움이 된다.

3. (단)양방향 통신이 쉽지 않다.

4. (단)상황에 따라 fflush를 너무 자주 해줘야 된다.

5. (단)파일 디스크립터를 FILE 구조체의 포인터로 형변환 ( fdopen() <=> fileno )

6. 표준 입출력 함수에서 송수신 한쪽의 연결을 끊으면 half-close가 아니라 소켓이 닫힌다.

   (두개의 파일 포인터가 결국 한개의 파일 descriptor에 연결되어 있기 때문)

7. 이를 방지하기 위해선 파일 디스크립터 복사 필요 - dup, dup2 함수

8. half-close구현을 위해선 dup된 함수를 fileno로 shutdown시켜야 한다. EOF

 

반응형

'IT 이론 > 네트워크&무선통신' 카테고리의 다른 글

FDMA, TDMA, CDMA, OFDM의 비교와 이해  (6) 2013.10.19
History of Cellular Systems  (0) 2013.10.17
소켓의 다양한 옵션  (0) 2013.06.15
Internet transport protocols : TCP and UDP  (0) 2013.04.17
인터넷 계층  (0) 2013.04.17

댓글