5. Byte Manipulation Functions 데이터를 해석하지 않고 그리고 데이터가 null-terminated C string 이라고 가정하지 않고, multibyte 필드에 대해서 동작하는 함수들은 두가지 그룹이 있다. 이러한 타입의 함수들은 socket address 구조체를 다룰 때 필요하다. 왜냐하면 우리는 IP주소(바이트 0들을 포함할 수 있지만 C character string은 아님)와 같은 필드들을 다뤄야하기 때문이다. 에 정의된 str로 시작하는 함수들은 null-terminated character string을 다룬다. 첫번째 함수 그룹은 4.2BSD와 socket 함수를 지원하는 대부분의 시스템에서 제공되는, 이름이 b로 시작하는 함수들이다. 두번째 함수 그룹은 ANSI..
3. Value-Result Arguments 이전에 언급했듯이, socket address 구조체가 socket function에 전달될 때, socket address 구조체는 항상 reference로 전달된다. 이 말은 구조체의 포인터가 전달된다는 얘기이다. 구조체의 길이 또한 매개변수로서 전달된다. 그러나 길이 매개변수가 넘겨지는 방향은 socket address 구조체가 넘겨지는 방향에따라 달라진다. (프로세스에서 커널로, 또는 반대로) 1) bind, connect, sendto 세개의 함수는 socket address 구조체를 프로세스에서 커널로 전달한다. 이 세개의 함수의 매개변수 중 하나는 socket address 구조체에 대한 포인터이며, 다른 매개변수 하나는 구조체의 integer ..
1. Introduction이번 챕터에서는 socket API에 대해 설명한다. 이 책의 대부분의 예제에선 나오는 socket address structure들부터 시작한다. 이 구조체들은 process에서 kernel, kernel에서 process 이렇게 두 방향으로 보내진다. 후자의 경우 value-result argument의 경우이다. 우리는 이러한 argument들의 여러가지 예제들을 이책을 통해서 보게 될 것이다.address conversion 함수는 text로 표현한 주소와 socket address structure에 들어가는 이진값 사이에 변환을 한다. 현존하는 IPv4 코드들은 inet_addr, inet_ntoa들을 사용하고, 새로운 두 개의 함수 inet_pton, inet_nt..
11. Buffer Sizes and Limitations특정한 limit들은 IP datagram 크기에 영향을 준다. 이러한 limit들에 대한 설명을 하고 그 다음에 application에서 전송되는 data에 어떻게 영향을 주는지에 대해 알아보도록 하자. 1> IPv4 datagram의 최고 크기는 IPv4 헤더까지 합쳐서 65,535 바이트이다. 아래 그림 1의 total length 필드 때문에 길이가 65,535바이트 인 것이다. 2> IPv6 datagram의 최고 크기는 40바이트의 IPv6 헤더까지 합쳐서 65,575 바이트이다. 이 길이는 아래 그림 2의 16-bit의 payload length때문에 그렇다. IPv6의 payload length 필드는 IPv6의 헤더 크기를 포함하지..
7. TIME_WAIT StateTCP 프로그래밍에서 가장 많이 혼동하는 것 중 하나가 TIME_WAIT state이다. 그림 1을 보면 ESTABLISHED state에서 active close가 TIME_WAIT state를 거쳐가는 것을 볼 수 있다. endpoint가 이 state에 머물러 있는 시간은 maximum segment lifetime(MSL)의 2배인데 이를 줄여서 2MSL이라고 부르기도 한다.TCP를 구현할 때 반드시 MSL값을 정해줘야하는데 RFC1122에 나온 추천은 2분이다. 그렇지만 Berkeley-derived implementation에서는 30초라서 보통 이 2MSL은 1분에서 4분정도 된다.MSL은 IP datagram이 네트워크에서 존재할 수 있는 시간이다.모든 da..
Unix Network Programming의 챕터2 The Transport Layer: TCP, UDP, and SCTP 1. IntroductionTCP, UDP, SCTP는 Transport Layer에 속하며 Nework Layer의 IPv4또는 IPv6를 사용한다.UDP는 신뢰할 수 없는 데이터그램 프로토콜이지만, TCP는 신뢰할 수 있는 byte-stream 프로토콜이다.SCTP는 TCP와 유사하게 신뢰할 수 있는 프로토콜이지만 데이터 경계를 가지고 있고 transport layer에서 제공해주는 multihoming과 head-of-line blocking을 제공해준다. 2. The Big Picture 그림 1은 프로토콜의 도식화를 나타낸 것이다.Transport Layer를 거치지 않고..
오큘러스에서 회전값을 받아와 UDP로 뿌려주면 로봇에 달려있는 PC가 시리얼포트로 로봇 목을 제어하는 모듈을 개발중이다. UDP는 이번에 처음 사용해보는데 TCP에 비해 프로토콜이 굉장히 간단한 느낌이다. UDP가 TCP에 비해 빠르다고 하는데 내가 만든 것은 가벼운 프로그램이라 체감은 못하겠고 TCP와 다른점은 다음과 같다. 1. UDP는 클라이언트 접속 개념이 없고 데이터 검증이 없다. TCP는 서버가 클라이언트를 listen하면 클라이언트가 접속을 시도하고 접속이 됐다는 결과를 알려준다. 접속 종료시에도 마찬가지이다. 하지만 UDP는 특정 port로 열어둘테니 데이터를 던져봐라라는 느낌이다. 데이터가 어느 클라이언트에서 왔는지는 알아서 판단해야한다. TCP 데이터 송수신은 데이터를 보내면 받았다는 ..
- Total
- Today
- Yesterday
- Tasklet
- MySQL
- Express
- spring batch
- Bin
- Closure
- @Qualifier
- Barycentric coordinates
- Bean
- JavaScript
- @Autowired
- 클로저
- chunk
- mybatis
- @Bean
- @Component
- unity
- thymeleaf 변수 인식
- npm
- nodejs
- thymeleaf cannot resolve
- Check point within polygon
- spring
- Linux
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |